Files
dotfiles/system/default.nix
alexion d0e77ed6a3 Scope in-file comments to the current file state (task 0001)
Address PR review feedback: in-file comments should describe only what the
file currently is, not task numbers, external tooling, or past/future states.

- hosts/neogaia: drop the "replaced by disko in task 0002" / "arrive in later
  tasks" framing; describe the filesystems and hardware profile as the
  placeholder values they are.
- lib: drop the "no null-placeholder traversal hack" comparison to a prior
  implementation.
- system: drop "no impure environment lookup" from the user.name description
  and the sops/post-boot roadmap from the user comment.
2026-07-19 07:57:21 -04:00

81 lines
2.3 KiB
Nix

{
config,
lib,
pkgs,
inputs,
...
}:
# The Skeleton's shared base config: the pieces every Host carries regardless of
# which Modules it enables — overlays, the `user`, flakes, and home-manager.
let
inherit (lib) mkOption types;
user = config.user;
# Instantiate an extra nixpkgs source for the same platform as the base pkgs.
pinArgs = prev: {
inherit (prev.stdenv.hostPlatform) system;
config.allowUnfree = true;
};
in
{
options.user = {
name = mkOption {
type = types.str;
default = "alexion";
description = ''
The primary interactive user this Host is built for. Drives both the
system account and the home-manager user in lockstep.
'';
};
description = mkOption {
type = types.str;
default = "Alexion";
description = "Human-readable description (GECOS field) for the primary user.";
};
};
config = {
# Base is nixos-unstable; reach a package fresher with `unstable.<name>` or
# pin it rock-solid with `stable.<name>`. chaotic's overlay is added by its
# own NixOS module, imported by the host-builder.
nixpkgs.overlays = [
(_final: prev: {
unstable = import inputs.nixpkgs-unstable (pinArgs prev);
stable = import inputs.nixpkgs-stable (pinArgs prev);
})
];
nixpkgs.config.allowUnfree = true;
# Flakes + a baseline so `nixos-rebuild switch` works from the console.
nix.settings.experimental-features = [
"nix-command"
"flakes"
];
environment.systemPackages = [ pkgs.git ];
# Primary user, in wheel. No password is set here.
users.users.${user.name} = {
isNormalUser = true;
description = user.description;
extraGroups = [ "wheel" ];
};
# home-manager as a NixOS module: one `nixos-rebuild switch` builds the
# system and the user environment atomically, sharing the system's pkgs
# (with our overlays) and installing user packages into the system profile.
home-manager = {
useGlobalPkgs = true;
useUserPackages = true;
extraSpecialArgs = {
inherit inputs;
my = inputs.self.lib;
};
users.${user.name} = {
home.username = user.name;
home.homeDirectory = "/home/${user.name}";
home.stateVersion = "26.05";
};
};
};
}