From dca840c3f1d38521d267df39852721a9d536bb45 Mon Sep 17 00:00:00 2001 From: Richard Mauer Date: Sun, 29 Dec 2024 21:35:34 -0500 Subject: [PATCH] renamed folder --- config/.gitignore | 3 + config/base.nix | 33 ++++ config/build.sh | 27 +++ config/initrd-include/configuration.nix | 166 ++++++++++++++++++ config/initrd-include/diskco.nix | 38 ++++ config/initrd-include/flake.nix | 28 +++ .../initrd-include/hardware-configuration.nix | 1 + 7 files changed, 296 insertions(+) create mode 100644 config/.gitignore create mode 100644 config/base.nix create mode 100755 config/build.sh create mode 100644 config/initrd-include/configuration.nix create mode 100644 config/initrd-include/diskco.nix create mode 100644 config/initrd-include/flake.nix create mode 100644 config/initrd-include/hardware-configuration.nix diff --git a/config/.gitignore b/config/.gitignore new file mode 100644 index 0000000..91ce5dd --- /dev/null +++ b/config/.gitignore @@ -0,0 +1,3 @@ +netboot-base +netboot-incremental +netboot-incremental.drv diff --git a/config/base.nix b/config/base.nix new file mode 100644 index 0000000..cfcb312 --- /dev/null +++ b/config/base.nix @@ -0,0 +1,33 @@ +{ config, pkgs, lib, diskoVersion, ... }: +let + disko = pkgs.callPackage ../../package.nix { inherit diskoVersion; }; +in +{ + imports = [ + ../quickly.nix + ## installer.nix is a system service to run a script on boot + #../installer/installer.nix + ]; + config = { + services.getty.autologinUser = "nixos"; + users.users.nixos = { + isNormalUser = true; + password = "password"; + extraGroups = [ "wheel" ]; # Enable ‘sudo’ for the user. + packages = with pkgs; [ + tmux + htop + tree + ]; + }; + environment.systemPackages = with pkgs; [ + vim # Do not forget to add an editor to edit configuration.nix! The Nano editor is also installed by default. + wget + disko + coreutils-full + nixos-install + nettools + ]; + + }; +} \ No newline at end of file diff --git a/config/build.sh b/config/build.sh new file mode 100755 index 0000000..ca5426c --- /dev/null +++ b/config/build.sh @@ -0,0 +1,27 @@ +#!/bin/sh + +set -eux + +cd "$(dirname "$0")" + +nix-build '' \ + -I nixos-config=./base.nix \ + -A config.system.build.ipxeBootDir \ + --out-link ./netboot-base + +nix-instantiate '' \ + -I nixos-config=./incremental.nix \ + -A config.system.build.ipxeBootDir \ + --add-root ./netboot-incremental.drv --indirect + +time nix-build ./netboot-incremental.drv \ + --out-link ./netboot-incremental + +ensureSame() ( + test "$(realpath "./netboot-base/$1")" = "$(realpath "./netboot-incremental/$1")" +) + +ensureSame bzImage +ensureSame initrd + +echo "ok!" diff --git a/config/initrd-include/configuration.nix b/config/initrd-include/configuration.nix new file mode 100644 index 0000000..409f884 --- /dev/null +++ b/config/initrd-include/configuration.nix @@ -0,0 +1,166 @@ +# Edit this configuration file to define what should be installed on +# your system. Help is available in the configuration.nix(5) man page +# and in the NixOS manual (accessible by running ‘nixos-help’). + +{ config, pkgs, ... }: + +{ + imports = + [ # Include the results of the hardware scan. + ./hardware-configuration.nix + ./diskco.nix + ]; + + # Bootloader. + boot.loader.grub.enable = true; + boot.loader.grub.device = "/dev/sda"; + boot.loader.grub.useOSProber = true; + + networking.hostName = "zabbix-proxy"; # Define your hostname. + # networking.wireless.enable = true; # Enables wireless support via wpa_supplicant. + + # Configure network proxy if necessary + # networking.proxy.default = "http://user:password@proxy:port/"; + # networking.proxy.noProxy = "127.0.0.1,localhost,internal.domain"; + + # Enable networking + networking.networkmanager.enable = true; + + # Set your time zone. + time.timeZone = "America/Detroit"; + + # Select internationalisation properties. + i18n.defaultLocale = "en_US.UTF-8"; + + i18n.extraLocaleSettings = { + LC_ADDRESS = "en_US.UTF-8"; + LC_IDENTIFICATION = "en_US.UTF-8"; + LC_MEASUREMENT = "en_US.UTF-8"; + LC_MONETARY = "en_US.UTF-8"; + LC_NAME = "en_US.UTF-8"; + LC_NUMERIC = "en_US.UTF-8"; + LC_PAPER = "en_US.UTF-8"; + LC_TELEPHONE = "en_US.UTF-8"; + LC_TIME = "en_US.UTF-8"; + }; + + # Configure keymap in X11 + services.xserver.xkb = { + layout = "us"; + variant = ""; + }; + + programs.bash.loginShellInit = '' +if [[ -t 0 ]] && [ -z "$TMUX" ] && [[ ! "$TERM" =~ tmux ]]; then + {tmux attach || tmux new-session -A -s ssh_tmux} +fi + ''; + + programs.tmux = { + enable = true; + clock24 = true; + baseIndex = 1; + newSession = true; + + plugins = with pkgs; [ + tmuxPlugins.better-mouse-mode + tmuxPlugins.sensible + tmuxPlugins.cpu + tmuxPlugins.net-speed + ]; + + extraConfig = '' +##### To copy and paste over ssh +##### Simply hold shift, Then click and drag with the mouse, right click copy. +##### Holding shift basically ignores tmux and allows your local terminal to work + ''; + + }; + + security.sudo = { + extraConfig = '' + Defaults env_keep += "TMUX" + ''; + }; + + # Define a user account. Don't forget to set a password with ‘passwd’. + users.users.swadmin = { + isNormalUser = true; + description = "SyncWave"; + extraGroups = [ "networkmanager" "wheel" ]; + packages = with pkgs; []; + }; + + # Allow unfree packages + nixpkgs.config.allowUnfree = true; + + nix.settings.experimental-features = [ "nix-command" "flakes" ]; + + system.autoUpgrade = { + enable = true; + allowReboot = true; + operation = "boot"; + channel = "https://channels.nixos.org/nixos-24.11"; + dates = "Mon 02:00"; + randomizedDelaySec = "45min"; + }; + nix.gc = { + automatic = true; + options = "--delete-older-than 180"; + dates = "Mon 06:00"; + randomizedDelaySec = "45min"; + }; + + # List packages installed in system profile. To search, run: + # $ nix search wget + environment.systemPackages = with pkgs; [ + # vim # Do not forget to add an editor to edit configuration.nix! The Nano editor is also installed by default. + # wget + ]; + + nixpkgs.overlays = [ + (self: super: { + zabbix.proxy-pgsql = super.zabbix70.proxy-pgsql; + }) + ]; + + services.zabbixProxy = { + enable = true; + server = "core.syncwave.cloud"; + database.createLocally = true; + settings = { + ProxyMode = "0"; + Hostname = "NixOS-Test"; + }; + extraPackages = with pkgs; [ nettools nmap traceroute ]; + }; + + + # 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: + + # Enable the OpenSSH daemon. + services.openssh.enable = true; + + # 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? + +} \ No newline at end of file diff --git a/config/initrd-include/diskco.nix b/config/initrd-include/diskco.nix new file mode 100644 index 0000000..8cb348d --- /dev/null +++ b/config/initrd-include/diskco.nix @@ -0,0 +1,38 @@ +{ + disko.devices = { + disk = { + main = { + type = "disk"; + device = "/dev/sda"; + content = { + type = "gpt"; + partitions = { + bios = { + size = "1M"; + priority = 1; + type = "EF02"; # for grub MBR + }; + ESP = { + size = "512M"; + type = "EF00"; + content = { + type = "filesystem"; + format = "vfat"; + mountpoint = "/boot"; + mountOptions = [ "umask=0077" ]; + }; + }; + root = { + size = "100%"; + content = { + type = "filesystem"; + format = "ext4"; + mountpoint = "/"; + }; + }; + }; + }; + }; + }; + }; +} \ No newline at end of file diff --git a/config/initrd-include/flake.nix b/config/initrd-include/flake.nix new file mode 100644 index 0000000..9015a8d --- /dev/null +++ b/config/initrd-include/flake.nix @@ -0,0 +1,28 @@ +{ + inputs ={ + nixpkgs.url = ; + #nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable"; + disko.url = "../../pkgs/disko"; + #disko.inputs.nixpkgs.follows = "nixpkgs"; + #nixos-facter-modules.url = "github:numtide/nixos-facter-modules"; + }; + outputs = + { + nixpkgs, + disko, + nixos-facter-modules, + ... + }: + { + nixosConfigurations.zabbixProxy = nixpkgs.lib.nixosSystem { + system = "x86_64-linux"; + # to pass this flake into your configuration (see the example below) + modules = [ + disko.nixosModules.disko + ./disko.nix + ./configuration.nix + ./hardware-configuration.nix + ]; + }; + }; +} \ No newline at end of file diff --git a/config/initrd-include/hardware-configuration.nix b/config/initrd-include/hardware-configuration.nix new file mode 100644 index 0000000..a40df93 --- /dev/null +++ b/config/initrd-include/hardware-configuration.nix @@ -0,0 +1 @@ +throw "Have you forgotten to run nixos-anywhere with `--generate-hardware-config nixos-generate-config ./hardware-configuration.nix`?"