From 0c1763528e12a23e708b39854cc24c52e504edb3 Mon Sep 17 00:00:00 2001 From: "Wyatt J. Miller" Date: Sun, 5 Oct 2025 23:11:47 -0400 Subject: [PATCH] added base configuration for ixion, applied system update, modified power mgmt readme --- flake.lock | 18 +++++- flake.nix | 34 ++++++----- modules/machine/ixion/configuration.nix | 78 +++++++++++++++++++++++-- modules/pwrMgmt/README.md | 4 +- 4 files changed, 111 insertions(+), 23 deletions(-) diff --git a/flake.lock b/flake.lock index e482aa1..32f8ffb 100644 --- a/flake.lock +++ b/flake.lock @@ -156,13 +156,29 @@ "type": "github" } }, + "quadlet-nix": { + "locked": { + "lastModified": 1758631655, + "narHash": "sha256-EGeZ963L7xsNAY7snvP1JHQe7LWLVCM6f49+PzWjhEE=", + "owner": "SEIAROTg", + "repo": "quadlet-nix", + "rev": "2ebe01b175e2e1e6de3f172d23f0c3b88713eec9", + "type": "github" + }, + "original": { + "owner": "SEIAROTg", + "repo": "quadlet-nix", + "type": "github" + } + }, "root": { "inputs": { "darwin": "darwin", "ghostty": "ghostty", "home-manager": "home-manager", "nix-flatpak": "nix-flatpak", - "nixpkgs": "nixpkgs_3" + "nixpkgs": "nixpkgs_3", + "quadlet-nix": "quadlet-nix" } }, "systems": { diff --git a/flake.nix b/flake.nix index 639e223..6321d1a 100644 --- a/flake.nix +++ b/flake.nix @@ -27,8 +27,10 @@ }: let userName = "wyatt"; userEmail = "wyatt@wyattjmiller.com"; - extraSpecialArgs = { - inherit userName userEmail ghostty; + + # use this variable to take inputs and use them as arguments in your modules, this will be the common one + customArgs = { + inherit userName userEmail ghostty quadlet-nix; }; in { meta = import ./meta; @@ -36,8 +38,7 @@ # Primary laptop - MacBook Pro (2023, M3) darwinConfigurations."sephiroth" = darwin.lib.darwinSystem { system = "aarch64-darwin"; - specialArgs = { - inherit userName userEmail ghostty; + specialArgs = customArgs // { hostname = "sephiroth"; role = "devel"; }; @@ -49,7 +50,9 @@ { home-manager.useGlobalPkgs = true; home-manager.useUserPackages = true; - home-manager.extraSpecialArgs = extraSpecialArgs; + home-manager.extraSpecialArgs = customArgs // { + inherit home-manager; + }; home-manager.users.${userName} = import ./home; } ]; @@ -58,8 +61,7 @@ # Primary desktop computer nixosConfigurations."cloud" = nixpkgs.lib.nixosSystem { system = "x86_64-linux"; - specialArgs = { - inherit userName userEmail ghostty; + specialArgs = customArgs // { hostname = "cloud"; role = "devel"; }; @@ -72,7 +74,9 @@ { home-manager.useGlobalPkgs = true; home-manager.useUserPackages = true; - home-manager.extraSpecialArgs = extraSpecialArgs; + home-manager.extraSpecialArgs = customArgs // { + inherit home-manager; + }; home-manager.users.${userName}.imports = [ ./home ]; @@ -83,8 +87,7 @@ # Apartment appliance server nixosConfigurations."valefor" = nixpkgs.lib.nixosSystem { system = "x86_64-linux"; - specialArgs = { - inherit userName userEmail; + specialArgs = customArgs // { hostname = "valefor"; role = "server"; }; @@ -96,7 +99,9 @@ { home-manager.useGlobalPkgs = true; home-manager.useUserPackages = true; - home-manager.extraSpecialArgs = extraSpecialArgs; + home-manager.extraSpecialArgs = customArgs // { + inherit home-manager; + }; home-manager.users.${userName}.imports = [ ./home ]; @@ -107,13 +112,12 @@ # Storage, status, game, and media server nixosConfigurations."ixion" = nixpkgs.lib.nixosSystem { system = "x86_64-linux"; - specialArgs = { - inherit userName userEmail; + specialArgs = customArgs // { hostname = "ixion"; role = "server"; }; modules = [ - nix-flatpak.nixosModules.nix-flatpak + quadlet-nix.nixosModules.quadlet ./modules/common ./modules/machine/ixion @@ -121,7 +125,7 @@ { home-manager.useGlobalPkgs = true; home-manager.useUserPackages = true; - home-manager.extraSpecialArgs = extraSpecialArgs; + home-manager.extraSpecialArgs = customArgs; home-manager.users.${userName}.imports = [ ./home ]; diff --git a/modules/machine/ixion/configuration.nix b/modules/machine/ixion/configuration.nix index 50e9b07..47c5a35 100644 --- a/modules/machine/ixion/configuration.nix +++ b/modules/machine/ixion/configuration.nix @@ -1,16 +1,84 @@ { - lib, pkgs, userName, ... }: { - imports = [ ]; + imports = [ + ../../pwrMgmt + ../../networking/core.nix + ../../virtualization/podman.nix + ../../virtualization/quadlet.nix + ../../virtualization/hardware.nix + ]; # Enable flakes for NixOS nix.settings.experimental-features = ["nix-command" "flakes"]; # Custom kernel/boot stuff - boot.kernelPackages = pkgs.linuxPackages_latest; - boot.loader.systemd-boot.enable = true; - boot.loader.efi.canTouchEfiVariables = true; + boot = { + kernelPackages = pkgs.linuxPackages_latest; + loader = { + systemd-boot.enable = true; + efi.canTouchEfiVariables = true; + }; + }; + + # Enable Polkit + security.polkit.enable = true; + + # Make sure Bluetooth is off! + hardware.bluetooth.enable = false; + + # Set your timezone + time.timeZone = "America/Detroit"; + + # Power management module + pwrMgmt = { + enable = true; + cpuFreqGovernor = "performance"; + powertop.enable = false; + }; + + # Podman module (see ../../virtualization/podman.nix) + podman = { + enable = true; + extraPackages = with pkgs; [ + docker-credential-helpers + toolbox + cosign + crane + podman-tui + ]; + }; + + # Core networking module (see ../../networking/core.nix) + network = { + firewall.enable = true; + networkManager.enable = true; + }; + + programs = { + # Enable GnuPG + gnupg.agent = { + enable = true; + enableSSHSupport = true; + }; + + # Enable SUID wrappers (some programs need them) + mtr.enable = true; + }; + + users.users.${userName}.extraGroups = ["wheel" "video" "podman" "network"]; + + services = { + # Enable OpenSSH + openssh.enable = true; + }; + + # Install packages to be installed system-wide + environment.systemPackages = with pkgs; [ + wireguard-tools + ]; + + system.stateVersion = "25.05"; } diff --git a/modules/pwrMgmt/README.md b/modules/pwrMgmt/README.md index 0291df6..d47f311 100644 --- a/modules/pwrMgmt/README.md +++ b/modules/pwrMgmt/README.md @@ -1,12 +1,12 @@ # Power management modules -This directory houses my own custom defined power management settings. These are set in the machine-specific configurations (typically). +This directory houses my own custom defined power management settings as NixOS modules. These are set in the machine-specific configurations (typically). ## Examples Given that this configuration is in the `machine/` directory (where hostname is the name of the computer your configuring): -### Desktop configuration +### Desktop/server configuration ```nix imports = [