From 140ba3d08af7e12fd679659a9584d7c699d41cdc Mon Sep 17 00:00:00 2001 From: Greg Hellings Date: Mon, 14 Apr 2025 00:44:19 -0500 Subject: [PATCH] Streamline base install Don't install printers by default Don't install NetworkManager by default, as it pulls in WAY too many dependencies, including a full GUI suite Simplify the template --- configuration.nix | 3 +- hosts/default.nix | 1 + hosts/proxmoxtemplate/default.nix | 55 +++++++++++++++++++ .../hardware-configuration.nix | 37 +++++++++++++ modules/nixos/default.nix | 5 +- modules/nixos/print.nix | 6 +- modules/nixos/tailscale.nix | 1 + 7 files changed, 98 insertions(+), 10 deletions(-) create mode 100644 hosts/proxmoxtemplate/default.nix create mode 100644 hosts/proxmoxtemplate/hardware-configuration.nix diff --git a/configuration.nix b/configuration.nix index df0f4e0..eaeb96a 100644 --- a/configuration.nix +++ b/configuration.nix @@ -24,7 +24,7 @@ # networking.proxy.noProxy = "127.0.0.1,localhost,internal.domain"; # Enable networking - networking.networkmanager.enable = true; + networking.networkmanager.enable = false; # Set your time zone. time.timeZone = "America/Chicago"; @@ -73,7 +73,6 @@ isNormalUser = true; description = "Greg Hellings"; extraGroups = [ - "networkmanager" "wheel" ]; packages = with pkgs; [ diff --git a/hosts/default.nix b/hosts/default.nix index acb6923..7be170f 100644 --- a/hosts/default.nix +++ b/hosts/default.nix @@ -67,6 +67,7 @@ rec { vm-jellyfin = vm { name = "vm-jellyfin"; }; jellyfin = vm-jellyfin; vm-matrix = vm { name = "vm-matrix"; }; + proxmoxtemplate = unstable { name = "proxmoxtemplate"; }; iso = unstable { name = "iso"; }; # nix build '.#nixosConfigurations.wsl.config.system.build.installer' diff --git a/hosts/proxmoxtemplate/default.nix b/hosts/proxmoxtemplate/default.nix new file mode 100644 index 0000000..8a95924 --- /dev/null +++ b/hosts/proxmoxtemplate/default.nix @@ -0,0 +1,55 @@ +# 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 + ]; + + # Bootloader. + boot.loader = { + systemd-boot.enable = true; + efi.canTouchEfiVariables = true; + }; + + environment.systemPackages = with pkgs; [ + ]; + + greg = { + home = true; + tailscale.enable = true; + }; + + networking = { + hostName = "proxmoxtemplate"; # Define your hostname. + # defaultGateway = { + # address = " 10.42.1.2"; + # interface = "enp6s18"; + # }; + # interfaces = { + # enp6s18 = { + # ipv4.addresses = [ + # { + # address = "10.42.1.8"; + # prefixLength = 16; + # } + # ]; + # }; + # }; + nameservers = [ "10.42.1.5" ]; + }; + + system.stateVersion = "24.11"; # Did you read the comment? + + # Define a user account. Don't forget to set a password with ‘passwd’. + users.users.greg = { + isNormalUser = true; + description = "Greg Hellings"; + extraGroups = [ "wheel" ]; + packages = with pkgs; []; + }; +} diff --git a/hosts/proxmoxtemplate/hardware-configuration.nix b/hosts/proxmoxtemplate/hardware-configuration.nix new file mode 100644 index 0000000..95d03e8 --- /dev/null +++ b/hosts/proxmoxtemplate/hardware-configuration.nix @@ -0,0 +1,37 @@ +# 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 + "/profiles/qemu-guest.nix") + ]; + + boot.initrd.availableKernelModules = [ "uhci_hcd" "ehci_pci" "ahci" "virtio_pci" "virtio_scsi" "sd_mod" "sr_mod" ]; + boot.initrd.kernelModules = [ ]; + boot.kernelModules = [ ]; + boot.extraModulePackages = [ ]; + + fileSystems."/" = + { device = "/dev/disk/by-uuid/507251f1-efe7-448d-8de8-91ee582a9afb"; + fsType = "ext4"; + }; + + fileSystems."/boot" = + { device = "/dev/disk/by-uuid/7115-EFA6"; + fsType = "vfat"; + options = [ "fmask=0077" "dmask=0077" ]; + }; + + 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..useDHCP`. + networking.useDHCP = lib.mkDefault true; + # networking.interfaces.enp6s18.useDHCP = lib.mkDefault true; + + nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; +} diff --git a/modules/nixos/default.nix b/modules/nixos/default.nix index 1479378..b5d45ec 100644 --- a/modules/nixos/default.nix +++ b/modules/nixos/default.nix @@ -45,13 +45,13 @@ settings.auto-optimise-store = true; }; - # I am a fan of network manager, myself + # Network Manager pulls in too many deps networking = { search = [ "thehellings.lan" "home" ]; - networkmanager.enable = true; + networkmanager.enable = false; }; programs.xonsh = { @@ -79,7 +79,6 @@ createHome = true; extraGroups = [ "wheel" - "networkmanager" ]; # Enable ‘sudo’ for the user. shell = config.programs.xonsh.package; initialPassword = "password"; diff --git a/modules/nixos/print.nix b/modules/nixos/print.nix index 1eeb99b..fef0388 100644 --- a/modules/nixos/print.nix +++ b/modules/nixos/print.nix @@ -11,11 +11,7 @@ let in with lib; { - options.greg.print.enable = mkOption { - type = types.bool; - default = true; - description = "Configures the system to print with my home printer"; - }; + options.greg.print.enable = mkEnableOption "Configures the system to print with my home printer"; config = mkIf cfg.enable { # ipp://printer.thehellings.lan:631/ - generic postscript printer diff --git a/modules/nixos/tailscale.nix b/modules/nixos/tailscale.nix index 046bc48..810930c 100644 --- a/modules/nixos/tailscale.nix +++ b/modules/nixos/tailscale.nix @@ -15,6 +15,7 @@ in "net.ipv4.ip_forward" = "1"; "net.ipv6.conf.all.forwarding" = "1"; }; + environment.systemPackages = [ config.services.tailscale.package ]; systemd.services.tailscaled.partOf = [ "network-online.target" ]; }; }