about summary refs log tree commit diff
diff options
context:
space:
mode:
authorFranck Cuny <franck@fcuny.net>2024-08-05 09:37:18 -0700
committerFranck Cuny <franck@fcuny.net>2024-08-05 09:37:18 -0700
commit11de044811d357b4b34e87bccfaf5302d0eb6c93 (patch)
tree050312e0a00e6467fda72095c49d2f2ae0ae567e
parentadd a linux VM as a new host (diff)
downloadworld-11de044811d357b4b34e87bccfaf5302d0eb6c93.tar.gz
add a new host: wildcat
This is a VPS on hetzner.
-rw-r--r--nix/flake/devshell.nix2
-rw-r--r--nix/flake/hosts.nix2
-rw-r--r--nix/flake/packages.nix2
-rw-r--r--nix/hosts/nixos/default.nix6
-rw-r--r--nix/hosts/nixos/packages.nix9
-rw-r--r--nix/hosts/nixos/user.nix12
-rw-r--r--nix/hosts/wildcat/default.nix15
-rw-r--r--nix/hosts/wildcat/hardware.nix29
-rw-r--r--nix/hosts/wildcat/networking.nix36
9 files changed, 111 insertions, 2 deletions
diff --git a/nix/flake/devshell.nix b/nix/flake/devshell.nix
index ff56ca6..6a3d678 100644
--- a/nix/flake/devshell.nix
+++ b/nix/flake/devshell.nix
@@ -29,7 +29,7 @@
           gofmt.enable = true;
           gofumpt.enable = true;
           nixpkgs-fmt.enable = true;
-          shellcheck.enable = true;
+          # shellcheck.enable = true;
           shfmt.enable = true;
           taplo.enable = true;
           ruff.enable = true;
diff --git a/nix/flake/hosts.nix b/nix/flake/hosts.nix
index c02fe6c..836a26b 100644
--- a/nix/flake/hosts.nix
+++ b/nix/flake/hosts.nix
@@ -34,6 +34,7 @@ let
   mkNixosConfig = system: path: nixpkgs.lib.nixosSystem {
     inherit system;
     modules = [
+      "${self}/nix/hosts/nixos"
       path
     ];
     specialArgs = { inherit inputs self; };
@@ -49,6 +50,7 @@ in
 
       nixosConfigurations = {
         vm = mkNixosConfig "aarch64-linux" "${self}/nix/hosts/vm";
+        wildcat = mkNixosConfig "x86_64-linux" "${self}/nix/hosts/wildcat";
       };
     }
   ];
diff --git a/nix/flake/packages.nix b/nix/flake/packages.nix
index ae4caba..16c5ec4 100644
--- a/nix/flake/packages.nix
+++ b/nix/flake/packages.nix
@@ -3,7 +3,7 @@
     inputs.flake-parts.flakeModules.easyOverlay
   ];
 
-  perSystem = { config, pkgs, ... }: {
+  perSystem = { pkgs, ... }: {
     packages = {
       git-blame-stats = pkgs.callPackage "${self}/packages/git-blame-stats" { };
       git-broom = pkgs.callPackage "${self}/packages/git-broom" { };
diff --git a/nix/hosts/nixos/default.nix b/nix/hosts/nixos/default.nix
new file mode 100644
index 0000000..abfb3a7
--- /dev/null
+++ b/nix/hosts/nixos/default.nix
@@ -0,0 +1,6 @@
+{ ... }: {
+  imports = [
+    ./packages.nix
+    ./user.nix
+  ];
+}
diff --git a/nix/hosts/nixos/packages.nix b/nix/hosts/nixos/packages.nix
new file mode 100644
index 0000000..8e807c6
--- /dev/null
+++ b/nix/hosts/nixos/packages.nix
@@ -0,0 +1,9 @@
+{ pkgs, ... }: {
+  environment = {
+    systemPackages = with pkgs; [
+      git
+      jq
+      vim
+    ];
+  };
+}
diff --git a/nix/hosts/nixos/user.nix b/nix/hosts/nixos/user.nix
new file mode 100644
index 0000000..b358d3e
--- /dev/null
+++ b/nix/hosts/nixos/user.nix
@@ -0,0 +1,12 @@
+{ ... }:
+{
+  users.users.fcuny = {
+    uid = 1000;
+    isNormalUser = true;
+    extraGroups =
+      [
+        "wheel"
+        "dialout" # Enable access to serial devices
+      ];
+  };
+}
diff --git a/nix/hosts/wildcat/default.nix b/nix/hosts/wildcat/default.nix
new file mode 100644
index 0000000..f62df7d
--- /dev/null
+++ b/nix/hosts/wildcat/default.nix
@@ -0,0 +1,15 @@
+{ ... }: {
+
+  imports = [
+    ./hardware.nix
+    ./networking.nix
+  ];
+
+  boot.tmp.cleanOnBoot = true;
+  zramSwap.enable = true;
+  networking.hostName = "fcuny";
+  networking.domain = "net";
+  services.openssh.enable = true;
+  users.users.root.openssh.authorizedKeys.keys = [ ''ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAINBkozy+X96u5ciX766bJ/AyQ3xm1tXZTIr5+4PVFZFi'' ];
+  system.stateVersion = "23.11";
+}
diff --git a/nix/hosts/wildcat/hardware.nix b/nix/hosts/wildcat/hardware.nix
new file mode 100644
index 0000000..cc14f5a
--- /dev/null
+++ b/nix/hosts/wildcat/hardware.nix
@@ -0,0 +1,29 @@
+{ modulesPath, ... }:
+{
+  imports = [ (modulesPath + "/profiles/qemu-guest.nix") ];
+
+  boot.initrd.availableKernelModules = [
+    "ata_piix"
+    "uhci_hcd"
+    "xen_blkfront"
+    "vmw_pvscsi"
+  ];
+
+  boot.loader.grub = {
+    enable = true;
+    device = "/dev/sda";
+  };
+
+  boot.initrd.kernelModules = [ "nvme" ];
+
+  fileSystems = {
+    "/" = {
+      device = "/dev/sda1";
+      fsType = "ext4";
+    };
+    "/data" = {
+      device = "/dev/disk/by-id/scsi-0HC_Volume_101115314";
+      fsType = "ext4";
+    };
+  };
+}
diff --git a/nix/hosts/wildcat/networking.nix b/nix/hosts/wildcat/networking.nix
new file mode 100644
index 0000000..1199113
--- /dev/null
+++ b/nix/hosts/wildcat/networking.nix
@@ -0,0 +1,36 @@
+{ lib, ... }: {
+  # This file was populated at runtime with the networking
+  # details gathered from the active system.
+  networking = {
+    nameservers = [
+      "2a01:4ff:ff00::add:2"
+      "2a01:4ff:ff00::add:1"
+      "185.12.64.1"
+    ];
+    defaultGateway = "172.31.1.1";
+    defaultGateway6 = {
+      address = "fe80::1";
+      interface = "eth0";
+    };
+    dhcpcd.enable = false;
+    usePredictableInterfaceNames = lib.mkForce false;
+    interfaces = {
+      eth0 = {
+        ipv4.addresses = [
+          { address = "5.78.87.68"; prefixLength = 32; }
+        ];
+        ipv6.addresses = [
+          { address = "2a01:4ff:1f0:d1a3::1"; prefixLength = 64; }
+          { address = "fe80::9400:3ff:fe98:d6dc"; prefixLength = 64; }
+        ];
+        ipv4.routes = [{ address = "172.31.1.1"; prefixLength = 32; }];
+        ipv6.routes = [{ address = "fe80::1"; prefixLength = 128; }];
+      };
+
+    };
+  };
+  services.udev.extraRules = ''
+    ATTR{address}=="96:00:03:98:d6:dc", NAME="eth0"
+
+  '';
+}