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:
commit
28e8bc938a
16 files changed
+922
No files matched your search
@@ -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;
|
||||
}
|
||||
@@ -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
|
||||
];
|
||||
}
|
||||
@@ -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;
|
||||
};
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
{ ... }:
|
||||
{
|
||||
# Import on machines where Steam is wanted.
|
||||
programs.steam = {
|
||||
enable = true;
|
||||
remotePlay.openFirewall = true;
|
||||
dedicatedServer.openFirewall = true;
|
||||
};
|
||||
}
|
||||
@@ -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;
|
||||
};
|
||||
}
|
||||
Reference in new issue
Block a user