{ config, lib, flake, pkgs, inputs, ... }: # The shared foundation for every host and guest. let inherit (lib) mkOption types; user = config.user; pinArgs = prev: { inherit (prev.stdenv.hostPlatform) system; config.allowUnfree = true; }; in { imports = [ inputs.home-manager.nixosModules.home-manager ]; options.user = { name = mkOption { type = types.str; default = "alexion"; description = '' Primary interactive user for this system. This drives the system account and Home Manager user together. ''; }; description = mkOption { type = types.str; default = "Alexion"; description = "Human-readable description for the primary user."; }; }; config = { nixpkgs.overlays = [ (_final: prev: { unstable = import inputs.nixpkgs-unstable (pinArgs prev); stable = import inputs.nixpkgs-stable (pinArgs prev); }) ]; nixpkgs.config.allowUnfree = true; nix.settings.experimental-features = [ "nix-command" "flakes" ]; users.users.${user.name} = { isNormalUser = true; description = user.description; extraGroups = [ "wheel" "storage" ]; }; users.groups.storage.gid = 10000; home-manager = { useGlobalPkgs = true; useUserPackages = true; extraSpecialArgs = { inherit flake inputs; }; users.${user.name} = { home.username = user.name; home.homeDirectory = "/home/${user.name}"; home.stateVersion = "26.05"; home.packages = with pkgs; [ eza wget ]; }; }; registry.shell-shortcut.${config.networking.hostName} = { ls = { command = "eza -alg --color=always --group-directories-first --icons=always"; abbreviation = false; }; la = { command = "eza -a --color=always --group-directories-first --icons=always"; abbreviation = false; }; ll = { command = "eza -lg --color=always --group-directories-first --icons=always"; abbreviation = false; }; lt = { command = "eza -aT -I '.git' --color=always --group-directories-first --icons=always"; abbreviation = false; }; "l." = { command = "eza -a | grep -e '^\\.'"; abbreviation = false; }; ".." = "cd .."; "..." = "cd ../.."; "...." = "cd ../../.."; cp = "cp -v"; tarnow = "tar -acf "; untar = "tar -zxvf "; wget = "wget -c "; grep = "grep --color=auto"; fgrep = "fgrep --color=auto"; egrep = "egrep --color=auto"; jctl = "journalctl -p 3 -xb"; update = "sudo nixos-rebuild switch --flake .#${config.networking.hostName}"; cleanup = "sudo nix-collect-garbage -d"; }; modules.shell.fish.enable = lib.mkDefault true; modules.shell.fish.defaultShell = lib.mkDefault true; modules.shell.tmux.enable = lib.mkDefault true; modules.shell.nvim.enable = lib.mkDefault true; modules.shell.git.enable = lib.mkDefault true; modules.shell.direnv.enable = lib.mkDefault true; }; }