feat(nixos): consolidate hosts into a shared flake

Manage T450s, X1EG2 and Framework 13 from pinned NixOS inputs while retaining
machine-specific storage and hardware configuration.

Changes:

Shared Configuration:
- Extract common, KDE, desktop, development and Steam modules
- Share Emacs, VS Code, htop, DevOps tools and Docker across hosts
- Remove obsolete apps and global project language runtimes

Framework:
- Import the 11th-generation Intel hardware profile
- Enable Steam and ZFS with tookland/home mounted at /home
- Document manual ext4 root and ZFS installation steps
- Require installer-generated hardware configuration before installation

Validation:
- Evaluate both ThinkPads and Framework with test hardware
- Check Nix syntax, formatting and whitespace
This commit is contained in:
clw committed 2026-10-06 15:58:10 +01:00
commit 28e8bc938a
16 files changed
+922

No files matched your search

+43
View File
@@ -0,0 +1,43 @@
{ pkgs, ... }:
{
nix.settings.experimental-features = [
"nix-command"
"flakes"
];
nix.settings.auto-optimise-store = true;
nix.gc = {
automatic = true;
dates = "weekly";
options = "--delete-older-than 30d";
};
nixpkgs.config.allowUnfree = true;
networking.networkmanager.enable = true;
time.timeZone = "Africa/Tunis";
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";
};
users.users.clw = {
isNormalUser = true;
description = "Chris Wong";
shell = pkgs.zsh;
extraGroups = [
"networkmanager"
"wheel"
"scanner"
"lp"
];
packages = [ pkgs.firefox ];
};
programs.zsh.enable = true;
}
+19
View File
@@ -0,0 +1,19 @@
{ pkgs, ... }:
{
# Shared desktop applications; imported by the two ThinkPads.
environment.systemPackages = with pkgs; [
bitwarden-desktop
brave
flatpak
google-chrome
jellyfin-desktop
libreoffice-qt
mpv
remmina
rocketchat-desktop
signal-desktop
tailscale
virt-manager
vlc
];
}
+48
View File
@@ -0,0 +1,48 @@
{ pkgs, ... }:
{
# Workstation tools only; language runtimes and SDKs belong in projects.
environment.systemPackages = with pkgs; [
# Editors and shell utilities.
emacs
vscode
git
htop
tmux
ripgrep
fd
duf
dust
killall
lsof
rsync
unzip
zip
# Infrastructure, containers, and structured data.
ansible
awscli2
docker-compose
jq
yq-go
# Networking and security tools.
openssh
gnupg
openssl
curl
dig
mosh
tcpdump
wget
whois
wireguard-tools
];
virtualisation.docker.enable = true;
users.users.clw.extraGroups = [ "docker" ];
programs.direnv = {
enable = true;
nix-direnv.enable = true;
};
}
+9
View File
@@ -0,0 +1,9 @@
{ ... }:
{
# Import on machines where Steam is wanted.
programs.steam = {
enable = true;
remotePlay.openFirewall = true;
dedicatedServer.openFirewall = true;
};
}
+23
View File
@@ -0,0 +1,23 @@
{ ... }:
{
services.xserver.enable = true;
services.xserver.xkb = {
layout = "us";
variant = "";
};
services.displayManager.sddm.enable = true;
services.desktopManager.plasma6.enable = true;
programs.dconf.enable = true;
services.printing.enable = true;
services.flatpak.enable = true;
hardware.bluetooth.enable = true;
security.rtkit.enable = true;
services.pipewire = {
enable = true;
alsa.enable = true;
alsa.support32Bit = true;
pulse.enable = true;
jack.enable = true;
};
}