summary refs log tree commit diff
path: root/machines
diff options
context:
space:
mode:
authorMel <mel@rnrd.eu>2025-04-09 22:13:08 +0200
committerMel <mel@rnrd.eu>2025-04-09 22:13:08 +0200
commit75addcd6257f9f02669f3cf11422a61dea1c7323 (patch)
tree5e25598b299fed9d1ffe2c1983ee673b28cb6dd3 /machines
parente27680dde6f8ecdf2db345cae4f165e68a2de8f3 (diff)
downloadnetwork-75addcd6257f9f02669f3cf11422a61dea1c7323.tar.zst
network-75addcd6257f9f02669f3cf11422a61dea1c7323.zip
Introduce new small-scale local 'fourmi' machine
Signed-off-by: Mel <mel@rnrd.eu>
Diffstat (limited to 'machines')
-rw-r--r--machines/fourmi/default.nix23
-rw-r--r--machines/fourmi/devices.nix38
-rw-r--r--machines/fourmi/hardware.nix32
-rw-r--r--machines/fourmi/home.nix9
4 files changed, 102 insertions, 0 deletions
diff --git a/machines/fourmi/default.nix b/machines/fourmi/default.nix
new file mode 100644
index 0000000..780838d
--- /dev/null
+++ b/machines/fourmi/default.nix
@@ -0,0 +1,23 @@
+{ pkgs, ... }:
+
+{
+  imports = [
+    ../../modules/common.nix
+
+    ./hardware.nix
+    ./devices.nix
+  ];
+
+  foundation.monitoring = {
+    client.enable = false;
+  };
+
+  # extra packages for dealing with the device
+  # hardware.
+  environment.systemPackages = with pkgs; [
+    libraspberrypi
+    raspberrypi-eeprom
+  ];
+
+  system.stateVersion = "24.11";
+}
diff --git a/machines/fourmi/devices.nix b/machines/fourmi/devices.nix
new file mode 100644
index 0000000..3738553
--- /dev/null
+++ b/machines/fourmi/devices.nix
@@ -0,0 +1,38 @@
+{ lib, nixos-hardware, ... }:
+
+{
+  # correctly configure hardware in this pi server.
+  imports = [
+    nixos-hardware.nixosModules.raspberry-pi-4
+  ];
+
+  # boot settings
+  boot = {
+    loader = { 
+      grub.enable = false;
+      generic-extlinux-compatible.enable = true;
+    };
+
+    kernelModules = [ "wireguard" ];
+  };
+
+  # apply rpi4-specific device tree from nixos-hardware.
+  hardware = {
+    raspberry-pi."4".apply-overlays-dtmerge.enable = true;
+    deviceTree = {
+      enable = true;
+      filter = "*rpi-4-*.dtb";
+    };
+  };
+
+  networking = {
+    # todo: configure properly
+    firewall.enable = lib.mkForce false;
+
+    useDHCP = true;
+    networkmanager = {
+      enable = false;
+      wifi.powersave = false;
+    };
+  };
+}
diff --git a/machines/fourmi/hardware.nix b/machines/fourmi/hardware.nix
new file mode 100644
index 0000000..e3913be
--- /dev/null
+++ b/machines/fourmi/hardware.nix
@@ -0,0 +1,32 @@
+# Do not modify this file!  It was generated by ‘nixos-generate-config’
+# and may be overwritten by future invocations.  Please make changes
+# to /etc/nixos/configuration.nix instead.
+{ config, lib, pkgs, modulesPath, ... }:
+
+{
+  imports =
+    [ (modulesPath + "/installer/scan/not-detected.nix")
+    ];
+
+  boot.initrd.availableKernelModules = [ "xhci_pci" ];
+  boot.initrd.kernelModules = [ ];
+  boot.kernelModules = [ ];
+  boot.extraModulePackages = [ ];
+
+  fileSystems."/" =
+    { device = "/dev/disk/by-uuid/44444444-4444-4444-8888-888888888888";
+      fsType = "ext4";
+    };
+
+  swapDevices = [ ];
+
+  # Enables DHCP on each ethernet and wireless interface. In case of scripted networking
+  # (the default) this is the recommended approach. When using systemd-networkd it's
+  # still possible to use this option, but it's recommended to use it in conjunction
+  # with explicit per-interface declarations with `networking.interfaces.<interface>.useDHCP`.
+  networking.useDHCP = lib.mkDefault true;
+  # networking.interfaces.end0.useDHCP = lib.mkDefault true;
+  # networking.interfaces.wlan0.useDHCP = lib.mkDefault true;
+
+  nixpkgs.hostPlatform = lib.mkDefault "aarch64-linux";
+}
diff --git a/machines/fourmi/home.nix b/machines/fourmi/home.nix
new file mode 100644
index 0000000..be5d645
--- /dev/null
+++ b/machines/fourmi/home.nix
@@ -0,0 +1,9 @@
+{ pkgs, ... }:
+
+{
+  imports = [
+    ../../modules/home/common.nix
+  ];
+
+  home.stateVersion = "24.11";
+}