Centralize hostname/user defaults

Co-authored-by: ragusa-it <196988693+ragusa-it@users.noreply.github.com>
This commit is contained in:
copilot-swe-agent[bot]
2026-02-01 20:54:32 +00:00
parent ba88891d03
commit 62c62ef680
5 changed files with 32 additions and 30 deletions

View File

@@ -52,18 +52,18 @@ mkdir -p hosts/<hostname>
cp /etc/nixos/hardware-configuration.nix hosts/<hostname>/ cp /etc/nixos/hardware-configuration.nix hosts/<hostname>/
``` ```
### 2. Replace Placeholders ### 2. Review Configuration Defaults
Edit the following files and replace these placeholders: Defaults are set in `flake.nix` and used across modules. Update them there:
| Placeholder | Example Value | Files | | Setting | Example Value | File |
|-------------|---------------|-------| |---------|---------------|------|
| `<hostname>` | `desktop` | `flake.nix`, `modules/common.nix` | | `hostname` | `desktop` | `flake.nix` |
| `<username>` | `john` | `modules/common.nix`, `modules/dev.nix`, `modules/gaming.nix` | | `username` | `john` | `flake.nix` |
| `<timezone>` | `America/New_York` | `modules/common.nix` | | `time.timeZone` | `America/New_York` | `modules/common.nix` |
| `<locale>` | `en_US.UTF-8` | `modules/common.nix` | | `i18n.defaultLocale` | `en_US.UTF-8` | `modules/common.nix` |
Also rename the `hosts/hostname/` directory to match your actual hostname, and ensure the same hostname is used for all `<hostname>` placeholders (including in `flake.nix`). Also rename the `hosts/<hostname>/` directory to match your actual hostname, and ensure the same hostname is set in `flake.nix`.
### 3. Stage Files in Git ### 3. Stage Files in Git
@@ -136,10 +136,10 @@ sudo nixos-rebuild boot --profile-name gaming --flake .#gaming
### Change Password ### Change Password
Generate a password hash and update `modules/common.nix`: Generate a password hash and save it to `/etc/nixos/secrets/<username>/password.hash`:
```bash ```bash
mkpasswd -m sha-512 mkpasswd -m sha-512
# Copy the output and replace <replace-with-password-hash> in common.nix # Save the output to /etc/nixos/secrets/<username>/password.hash with 600 permissions
``` ```
### Setup MangoWC ### Setup MangoWC

View File

@@ -37,15 +37,18 @@
outputs = { self, nixpkgs, mango, quickshell, noctalia, nix-gaming, home-manager, ... }@inputs: outputs = { self, nixpkgs, mango, quickshell, noctalia, nix-gaming, home-manager, ... }@inputs:
let let
system = "x86_64-linux"; system = "x86_64-linux";
hostname = "atlas";
username = "pinj";
lib = nixpkgs.lib; lib = nixpkgs.lib;
specialArgs = { inherit inputs system; }; hostConfig = ./hosts + "/${hostname}/hardware-configuration.nix";
specialArgs = { inherit inputs system hostname username; };
# Verify mango flake exports the expected module # Verify mango flake exports the expected module
mangoModule = assert lib.hasAttrByPath [ "nixosModules" "mango" ] mango; mangoModule = assert lib.hasAttrByPath [ "nixosModules" "mango" ] mango;
mango.nixosModules.mango; mango.nixosModules.mango;
commonModules = [ commonModules = [
./hosts/atlas/hardware-configuration.nix hostConfig
./modules/common.nix ./modules/common.nix
mangoModule mangoModule
# Home Manager module - Foundation for user-level package management # Home Manager module - Foundation for user-level package management

View File

@@ -1,4 +1,4 @@
{ config, pkgs, inputs, system, ... }: { config, pkgs, inputs, system, hostname, username, ... }:
{ {
# -------------------------------------------------------------------------- # --------------------------------------------------------------------------
@@ -10,7 +10,7 @@
# -------------------------------------------------------------------------- # --------------------------------------------------------------------------
# SYSTEM # SYSTEM
# -------------------------------------------------------------------------- # --------------------------------------------------------------------------
networking.hostName = "atlas"; networking.hostName = hostname;
time.timeZone = "Europe/Berlin"; time.timeZone = "Europe/Berlin";
i18n.defaultLocale = "en_US.UTF-8"; i18n.defaultLocale = "en_US.UTF-8";
@@ -57,12 +57,11 @@
# RADV (Mesa) is the default and performs better for gaming # RADV (Mesa) is the default and performs better for gaming
}; };
# RADV is already the default Vulkan driver
# This variable is optional but makes it explicit
environment.variables.AMD_VULKAN_ICD = "RADV";
# Wayland session variables for proper app integration # Wayland session variables for proper app integration
environment.sessionVariables = { environment.sessionVariables = {
# RADV is already the default Vulkan driver
# This variable is optional but makes it explicit
AMD_VULKAN_ICD = "RADV";
QT_QPA_PLATFORM = "wayland"; QT_QPA_PLATFORM = "wayland";
MOZ_ENABLE_WAYLAND = "1"; MOZ_ENABLE_WAYLAND = "1";
NIXOS_OZONE_WL = "1"; # Electron apps (VS Code, Discord, etc.) NIXOS_OZONE_WL = "1"; # Electron apps (VS Code, Discord, etc.)
@@ -101,19 +100,19 @@
enable = true; enable = true;
settings.default_session = { settings.default_session = {
command = "mango"; command = "mango";
user = "pinj"; user = username;
}; };
}; };
# -------------------------------------------------------------------------- # --------------------------------------------------------------------------
# USER ACCOUNT # USER ACCOUNT
# -------------------------------------------------------------------------- # --------------------------------------------------------------------------
users.users.pinj = { users.users.${username} = {
isNormalUser = true; isNormalUser = true;
extraGroups = [ "wheel" "networkmanager" "video" "seat" ]; extraGroups = [ "wheel" "networkmanager" "video" "seat" ];
# IMPORTANT: Generate a password hash with: mkpasswd -m sha-512 # IMPORTANT: Generate a password hash with: mkpasswd -m sha-512
# Then replace the placeholder below with the generated hash # Save it to the path below (ensure permissions are 600)
hashedPassword = "<replace-with-password-hash>"; hashedPasswordFile = "/etc/nixos/secrets/${username}/password.hash";
packages = with pkgs; [ packages = with pkgs; [
# -- Noctalia Shell -- # -- Noctalia Shell --
inputs.quickshell.packages.${system}.default inputs.quickshell.packages.${system}.default

View File

@@ -1,4 +1,4 @@
{ pkgs, ... }: { pkgs, username, ... }:
{ {
# Identification tag (shows in boot menu and `nixos-version`) # Identification tag (shows in boot menu and `nixos-version`)
@@ -24,7 +24,7 @@
# NOTE: After first enabling/applying this dev profile, you must log out and # NOTE: After first enabling/applying this dev profile, you must log out and
# log back in (or reboot) for the docker group membership to take effect. # log back in (or reboot) for the docker group membership to take effect.
users.users.pinj.extraGroups = [ "docker" ]; users.users.${username}.extraGroups = [ "docker" ];
# -------------------------------------------------------------------------- # --------------------------------------------------------------------------
# DEVELOPMENT TOOLS # DEVELOPMENT TOOLS
@@ -34,7 +34,7 @@
nix-direnv.enable = true; # Caches nix shells nix-direnv.enable = true; # Caches nix shells
}; };
users.users.pinj.packages = with pkgs; [ users.users.${username}.packages = with pkgs; [
# -- Git -- # -- Git --
lazygit lazygit
gh # GitHub CLI gh # GitHub CLI

View File

@@ -1,4 +1,4 @@
{ pkgs, inputs, ... }: { pkgs, inputs, username, ... }:
{ {
# Identification tags (shows in boot menu) # Identification tags (shows in boot menu)
@@ -62,12 +62,12 @@
# programs to function correctly. These groups are only added when using # programs to function correctly. These groups are only added when using
# the gaming profile. If you need consistent group membership across # the gaming profile. If you need consistent group membership across
# both profiles, add these groups to common.nix instead. # both profiles, add these groups to common.nix instead.
users.users.pinj.extraGroups = [ "corectrl" "gamemode" ]; users.users.${username}.extraGroups = [ "corectrl" "gamemode" ];
# -------------------------------------------------------------------------- # --------------------------------------------------------------------------
# GAMING PACKAGES # GAMING PACKAGES
# -------------------------------------------------------------------------- # --------------------------------------------------------------------------
users.users.pinj.packages = with pkgs; [ users.users.${username}.packages = with pkgs; [
# -- Performance Overlays -- # -- Performance Overlays --
mangohud # FPS counter, GPU stats mangohud # FPS counter, GPU stats
goverlay # MangoHud GUI config goverlay # MangoHud GUI config