From 7e3457a7245589e0e40bec36a41921a185852aaf Mon Sep 17 00:00:00 2001 From: lilly <li@lly.sh> Date: Fri, 7 Feb 2025 15:02:33 +0100 Subject: [PATCH] update test system config --- README.md | 9 ++++++++ flake.lock | 22 ++++++++++++++++++ flake.nix | 6 +++++ modules/base_system.nix | 43 +++++++++++++++++++++++++++++++++--- packages/default.nix | 1 + systems/default.nix | 8 +++++-- systems/installer.nix | 32 +++++++++++++++++++++++++++ systems/test.eh22.intern.nix | 39 +------------------------------- 8 files changed, 117 insertions(+), 43 deletions(-) create mode 100644 README.md create mode 100644 systems/installer.nix diff --git a/README.md b/README.md new file mode 100644 index 0000000..a5b2682 --- /dev/null +++ b/README.md @@ -0,0 +1,9 @@ +# EH22 Noc-Nix + +## Known Machines + +- Hypervisor + - CCCHH IPMI Address: http://172.31.201.56 + - CCCHH Proxmox Address: https://10.31.210.248:8006/ + + diff --git a/flake.lock b/flake.lock index efb7113..8f36cb8 100644 --- a/flake.lock +++ b/flake.lock @@ -1,5 +1,26 @@ { "nodes": { + "disko": { + "inputs": { + "nixpkgs": [ + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1736864502, + "narHash": "sha256-ItkIZyebGvNH2dK9jVGzJHGPtb6BSWLN8Gmef16NeY0=", + "owner": "nix-community", + "repo": "disko", + "rev": "0141aabed359f063de7413f80d906e1d98c0c123", + "type": "github" + }, + "original": { + "owner": "nix-community", + "ref": "latest", + "repo": "disko", + "type": "github" + } + }, "flake-utils": { "inputs": { "systems": "systems" @@ -110,6 +131,7 @@ }, "root": { "inputs": { + "disko": "disko", "home-manager": "home-manager", "lix": "lix", "nixpkgs": "nixpkgs", diff --git a/flake.nix b/flake.nix index 1afd777..e64b488 100644 --- a/flake.nix +++ b/flake.nix @@ -14,6 +14,12 @@ inputs.nixpkgs.follows = "nixpkgs"; }; + # disk paritioning defined via nix + disko = { + url = "github:nix-community/disko?ref=latest"; + inputs.nixpkgs.follows = "nixpkgs"; + }; + # secret management sops-nix = { url = "github:Mic92/sops-nix"; diff --git a/modules/base_system.nix b/modules/base_system.nix index 9116cfd..adfa592 100644 --- a/modules/base_system.nix +++ b/modules/base_system.nix @@ -23,12 +23,48 @@ "virtio_blk" ]; boot.initrd.kernelModules = [ ]; + boot.kernelModules = [ "kvm-intel" ]; boot.extraModulePackages = [ ]; - boot.loader.systemd-boot = { + boot.loader.grub = { enable = true; - configurationLimit = 25; - editor = false; + device = lib.mkDefault "/dev/disk/by-id/scsi-0QEMU_QEMU_HARDDISK_drive-scsi0"; + }; + + # partitioning and filesystems + disko.devices = lib.mkDefault { + disk = { + system = { + type = "disk"; + device = lib.mkDefault "/dev/disk/by-id/scsi-0QEMU_QEMU_HARDDISK_drive-scsi0"; + content = { + type = "gpt"; + partitions = { + mbr = { + type = "ef02"; + size = "1M"; + }; + swap = { + size = lib.mkDefault "8G"; + content = { + type = "swap"; + discardPolicy = "both"; + }; + }; + root = { + type = "8300"; + size = "100%"; + content = { + type = "filesystem"; + format = "ext4"; + mountpoint = "/"; + mountOptions = [ "defaults" "noatime" ]; + }; + }; + }; + }; + }; + }; }; # settings for nix and nixos @@ -107,6 +143,7 @@ helix htop ]; + #environment.variables = { # EDITOR = "hx"; # VISUAL = "hx"; diff --git a/packages/default.nix b/packages/default.nix index 477cd63..5917dfe 100644 --- a/packages/default.nix +++ b/packages/default.nix @@ -2,4 +2,5 @@ { # add new packages here as: # name = pkgs.callPackage ./package-source.nix {}; + installer = flake.outputs.nixosConfigurations.installer.config.system.build.isoImage; } diff --git a/systems/default.nix b/systems/default.nix index 8085fc5..466ef17 100644 --- a/systems/default.nix +++ b/systems/default.nix @@ -1,7 +1,7 @@ { flake }: let nixpkgs = flake.inputs.nixpkgs; - + # utility function to create a new nixos configuration # call like `mkSystem "x86_64-linux" "<hostname>.eh22.intern"` mkSystem = @@ -13,6 +13,7 @@ let flake.inputs.home-manager.nixosModules.home-manager flake.inputs.sops-nix.nixosModules.default flake.inputs.lix.nixosModules.lixFromNixpkgs + flake.inputs.disko.nixosModules.default ../modules/base_system.nix ../modules/user_account.nix @@ -36,6 +37,9 @@ let }; in { - # exposed hosts at myroot + # prod hosts + + # misc hosts "test.eh22.intern" = mkSystem "x86_64-linux" "test.eh22.intern"; + "installer" = mkSystem "x86_64-linux" "installer"; } diff --git a/systems/installer.nix b/systems/installer.nix new file mode 100644 index 0000000..cae6e41 --- /dev/null +++ b/systems/installer.nix @@ -0,0 +1,32 @@ + +{ + config, + modulesPath, + lib, + pkgs, + ... +}: +{ + imports = [ + (modulesPath + "/installer/cd-dvd/installation-cd-minimal.nix") + ]; + + networking.hostName = lib.mkForce "eh22-nixos-installer"; + networking.wireless.enable = false; + system.installer.channel.enable = true; + environment.systemPackages = with pkgs; [ + disko + ]; + + # configure our own user account in the installer + services.getty.autologinUser = lib.mkForce "noc"; + + # conflict resolutions + services.openssh.settings.PermitRootLogin = lib.mkForce "no"; + boot.initrd.systemd.enable = lib.mkForce false; + boot.loader.grub.enable = lib.mkForce false; + + # this is only okay because the installer does not have any persistence so no data can be in an old/incompatible format + system.stateVersion = config.system.nixos.release; + home-manager.users.noc.home.stateVersion = config.system.stateVersion; +} diff --git a/systems/test.eh22.intern.nix b/systems/test.eh22.intern.nix index 5bb58c0..91bb896 100644 --- a/systems/test.eh22.intern.nix +++ b/systems/test.eh22.intern.nix @@ -4,45 +4,8 @@ { imports = [ ]; - # boot config - fileSystems = { - "/boot" = { - device = "/dev/disk/by-uuid/94A7-6995"; - fsType = "vfat"; - options = [ - "fmask=0077" - "dmask=0077" - ]; - }; - "/" = { - device = "/dev/disk/by-uuid/4e0b7ea5-8c74-478f-a4e3-ddc5691e4065"; - fsType = "ext4"; - }; - "/srv/data/k8s" = { - device = "10.0.10.14:/srv/data/k8s"; - fsType = "nfs"; - options = [ - "defaults" - "_netdev" - ]; - }; - }; - # networking config - networking.useDHCP = false; - systemd.network = { - enable = true; - networks.enp1s0 = { - matchConfig = { - Type = "ether"; - MACAddress = "52:54:00:e6:1f:51"; - }; - networkConfig = { - IPv6AcceptRA = false; - }; - DHCP = "yes"; - }; - }; + networking.useDHCP = true; # DO NOT CHANGE # this defines the first version of NixOS that was installed on the machine so that programs with non-migratable data files are kept compatible