From 4224c170444935afb74b8baf94f3fdbf53e9db52 Mon Sep 17 00:00:00 2001 From: Gabe Venberg Date: Tue, 18 Jun 2024 18:06:17 -0500 Subject: [PATCH] added rockpro host and deployment profile. --- configs/nixos/sound.nix | 1 - flake.nix | 12 ++++ hosts/rockpro64/default.nix | 94 +++++++++++++++++++++++++++++ hosts/rockpro64/disk-config.nix | 32 ++++++++++ hosts/rockpro64/hardware-config.nix | 8 +++ packages/aarch64-iso.nix | 2 +- packages/iso.nix | 2 +- 7 files changed, 148 insertions(+), 3 deletions(-) create mode 100644 hosts/rockpro64/default.nix create mode 100644 hosts/rockpro64/disk-config.nix create mode 100644 hosts/rockpro64/hardware-config.nix diff --git a/configs/nixos/sound.nix b/configs/nixos/sound.nix index 4378895..dd93011 100644 --- a/configs/nixos/sound.nix +++ b/configs/nixos/sound.nix @@ -4,7 +4,6 @@ ... }: { # Enable sound with pipewire. - sound.enable = true; hardware.pulseaudio.enable = false; security.rtkit.enable = true; services.pipewire = { diff --git a/flake.nix b/flake.nix index a19ecb9..35b0fa6 100644 --- a/flake.nix +++ b/flake.nix @@ -91,6 +91,7 @@ archlaptop-vm = import ./hosts/archlaptop-vm {inherit inputs configLib;}; workstation-vm = import ./hosts/workstation-vm {inherit inputs configLib;}; gv-wsl = import ./hosts/wsl-workstation.nix {inherit inputs configLib;}; + rockpro = import ./hosts/rockpro64 {inherit inputs configLib;}; }; # Standalone home-manager configuration entrypoint @@ -102,6 +103,17 @@ "gabe@gv-ubuntu" = import ./hosts/home-workstation.nix {inherit inputs configLib;}; }; + deploy = { + nodes = { + rockpro = { + hostname = "rockpro"; + profiles.system.path = deploy-rs.lib.aarch64-linux.activate.nixos self.nixosConfigurations.rockpro; + remoteBuild = true; + }; + }; + sshUser = "root"; + }; + packages.x86_64-linux = { proxmox = import ./packages/proxmox.nix {inherit inputs configLib;}; iso = import ./packages/iso.nix {inherit inputs configLib;}; diff --git a/hosts/rockpro64/default.nix b/hosts/rockpro64/default.nix new file mode 100644 index 0000000..95515ef --- /dev/null +++ b/hosts/rockpro64/default.nix @@ -0,0 +1,94 @@ +{ + inputs, + configLib, + ... +}: +inputs.nixpkgs.lib.nixosSystem { + system = "aarch64-linux"; + specialArgs = {inherit inputs configLib;}; + modules = [ + inputs.home-manager.nixosModules.home-manager + inputs.disko.nixosModules.disko + ./disk-config.nix + ./hardware-config.nix + ../../configs/nixos/common.nix + ../../configs/nixos/sshd.nix + ../../configs/nixos/secrets.nix + ../../configs/nixos/i3 + ../../configs/nixos/sound.nix + ../../configs/nixos/interactive-networking.nix + ({ + config, + pkgs, + configLib, + ... + }: { + boot.initrd.kernelModules = [ + # PCIe/NVMe + "nvme" + "pcie_rockchip_host" + "rockchip_rga" + "rockchip_saradc" + "rockchip_thermal" + "rockchipdrm" + "phy_rockchip_pcie" + ]; + hardware.enableRedistributableFirmware = true; + host = { + user = "gabe"; + fullName = "Gabe Venberg"; + }; + networking.hostName = "rockpro"; # Define your hostname. + + # home-manager.sharedModules = [ + # inputs.sops-nix.homeManagerModules.sops + # ]; + home-manager.users.${config.host.user} = { + inputs, + osConfig, + lib, + ... + }: { + host = osConfig.host; + user = { + git = { + profile = { + name = config.host.fullName; + email = "gabevenberg@gmail.com"; + }; + workProfile.enable = false; + }; + }; + imports = [ + ../../roles/home-manager/terminal.nix + ../../configs/home-manager/common.nix + inputs.nixvim.homeManagerModules.nixvim + # ../../configs/home-manager/secrets.nix + ]; + + # sops = lib.mkIf (inputs ? nix-secrets) { + # secrets = { + # }; + # }; + }; + + # Bootloader. + boot.loader.systemd-boot.enable = true; + boot.loader.efi.canTouchEfiVariables = false; + + # Open ports in the firewall. + # networking.firewall.allowedTCPPorts = [ ... ]; + # networking.firewall.allowedUDPPorts = [ ... ]; + # Or disable the firewall altogether. + # networking.firewall.enable = false; + + # This value determines the NixOS release from which the default + # settings for stateful data, like file locations and database versions + # on your system were taken. It‘s perfectly fine and recommended to leave + # this value at the release version of the first install of this system. + # Before changing this value read the documentation for this option + # (e.g. man configuration.nix or on https://nixos.org/nixos/options.html). + system.stateVersion = "24.11"; # Did you read the comment? + }) + ]; +} diff --git a/hosts/rockpro64/disk-config.nix b/hosts/rockpro64/disk-config.nix new file mode 100644 index 0000000..1b9d011 --- /dev/null +++ b/hosts/rockpro64/disk-config.nix @@ -0,0 +1,32 @@ +{ + disko.devices = { + disk = { + emmc = { + device = "/dev/disk/by-id/mmc-A3A442_0x7a73362f"; + type = "disk"; + content = { + type = "gpt"; + partitions = { + ESP = { + type = "EF00"; + size = "512M"; + content = { + type = "filesystem"; + format = "vfat"; + mountpoint = "/boot"; + }; + }; + root = { + size = "100%"; + content = { + type = "filesystem"; + format = "ext4"; + mountpoint = "/"; + }; + }; + }; + }; + }; + }; + }; +} diff --git a/hosts/rockpro64/hardware-config.nix b/hosts/rockpro64/hardware-config.nix new file mode 100644 index 0000000..0a7cdb6 --- /dev/null +++ b/hosts/rockpro64/hardware-config.nix @@ -0,0 +1,8 @@ +{ + boot.initrd.kernelModules = [ + # PCIe/NVMe + "nvme" + "pcie_rockchip_host" + "phy_rockchip_pcie" + ]; +} diff --git a/packages/aarch64-iso.nix b/packages/aarch64-iso.nix index c145555..906a305 100644 --- a/packages/aarch64-iso.nix +++ b/packages/aarch64-iso.nix @@ -46,8 +46,8 @@ users.users.${config.host.user} = { packages = with pkgs; [ - gparted neovim + gptfdisk ]; }; diff --git a/packages/iso.nix b/packages/iso.nix index 5474c3f..cbf2a30 100644 --- a/packages/iso.nix +++ b/packages/iso.nix @@ -44,8 +44,8 @@ users.users.${config.host.user} = { packages = with pkgs; [ - gparted firefox + gptfdisk ]; };