Centralize hostname/user defaults
Co-authored-by: ragusa-it <196988693+ragusa-it@users.noreply.github.com>
This commit is contained in:
24
README.md
24
README.md
@@ -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
|
||||||
@@ -225,4 +225,4 @@ cat /proc/sys/vm/max_map_count # Should be 2147483642 on gaming profile
|
|||||||
|
|
||||||
## License
|
## License
|
||||||
|
|
||||||
MIT
|
MIT
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user