From 7c2a09a360b3365c7124172aff36f15df0cfb3a5 Mon Sep 17 00:00:00 2001 From: emmatherock Date: Wed, 12 Aug 2026 03:20:28 -0300 Subject: [PATCH] refactor(packages): split core packages from per-host extras modules/system/packages.nix now exposes myPackages.extra so hosts can add their own tools on top of the always-installed core set, instead of hardcoding every host's packages in one shared list. Co-Authored-By: Claude Sonnet 5 --- hosts/miku-homelab/default.nix | 7 +++++++ hosts/vps/default.nix | 1 + modules/system/packages.nix | 35 ++++++++++++++++++++++------------ 3 files changed, 31 insertions(+), 12 deletions(-) diff --git a/hosts/miku-homelab/default.nix b/hosts/miku-homelab/default.nix index 115fbdf..b362681 100644 --- a/hosts/miku-homelab/default.nix +++ b/hosts/miku-homelab/default.nix @@ -12,6 +12,13 @@ age.secrets.miku-homelab-wg.file = ../../secrets/miku-homelab-wg.age; + myPackages.extra = with pkgs; [ + rocmPackages.rocm-smi + btrfs-progs + distrobox + steam-run + ]; + myNetworking = { hostName = "miku-homelab"; useNetworkManager = true; diff --git a/hosts/vps/default.nix b/hosts/vps/default.nix index e3d17a3..e8a0b6c 100644 --- a/hosts/vps/default.nix +++ b/hosts/vps/default.nix @@ -4,6 +4,7 @@ imports = [ ./hardware-configuration.nix ../../modules/profiles/server.nix + ../../modules/system/packages.nix ]; # PLACEHOLDER: secrets/vps-wg.age does not exist yet. It has to be created diff --git a/modules/system/packages.nix b/modules/system/packages.nix index 94abc6d..aa0d571 100644 --- a/modules/system/packages.nix +++ b/modules/system/packages.nix @@ -1,14 +1,25 @@ -{pkgs, ... }: +{ lib, pkgs, config, ... }: + +let + cfg = config.myPackages; +in { - environment.systemPackages = with pkgs; [ - git - wget - curl - ethtool - fish - rocmPackages.rocm-smi - btrfs-progs - distrobox - steam-run - ]; + options.myPackages = { + extra = lib.mkOption { + type = lib.types.listOf lib.types.package; + default = [ ]; + description = "Extra packages to install on this host, beyond the core set."; + }; + }; + + config = { + environment.systemPackages = with pkgs; [ + git + wget + curl + ethtool + fish + tmux + ] ++ cfg.extra; + }; }