An opinionated NixOS configuration with Hyprland, featuring: - Modular flake-based architecture - Parameterized user configuration (username, timezone, locale, etc.) - Classical/antiquity theme with Thomas Cole wallpapers - Full Hyprland setup with waybar, rofi, swaync - Custom utility scripts (screenshots, screen recording, WiFi QR) - Neovim with LSP support - Interactive installer for existing NixOS systems - ISO builder for fresh installations Flake outputs: - nixosConfigurations.example - Test configuration - nixosConfigurations.installer - ISO installer - packages.iso - Bootable ISO image - apps.default - Interactive installer - lib.mkHost - Host builder function - templates.default - Starter template Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
117 lines
3.1 KiB
Nix
117 lines
3.1 KiB
Nix
# ISO Installer Configuration
|
|
{
|
|
config,
|
|
lib,
|
|
pkgs,
|
|
modulesPath,
|
|
inputs,
|
|
...
|
|
}: {
|
|
imports = [
|
|
"${modulesPath}/installer/cd-dvd/installation-cd-minimal.nix"
|
|
"${modulesPath}/installer/cd-dvd/channel.nix"
|
|
];
|
|
|
|
# ISO naming
|
|
isoImage.isoName = "nomarchy-${config.system.nixos.label}-${pkgs.stdenv.hostPlatform.system}.iso";
|
|
isoImage.volumeID = "NOMARCHY";
|
|
|
|
# Boot settings - use LTS kernel for ISO stability
|
|
boot.kernelPackages = pkgs.linuxPackages;
|
|
|
|
# Disable ZFS (broken with latest kernels)
|
|
boot.supportedFilesystems = lib.mkForce ["btrfs" "reiserfs" "vfat" "f2fs" "xfs" "ntfs" "cifs" "ext4"];
|
|
|
|
# Limine bootloader for ISO (commented out until properly configured)
|
|
# boot.loader.limine.enable = true;
|
|
|
|
# Enable SSH for headless installs
|
|
services.openssh = {
|
|
enable = true;
|
|
settings.PermitRootLogin = "yes";
|
|
};
|
|
|
|
# Networking
|
|
networking = {
|
|
hostName = "nomarchy-installer";
|
|
networkmanager.enable = true;
|
|
wireless.enable = lib.mkForce false;
|
|
};
|
|
|
|
# Installer environment packages
|
|
environment.systemPackages = with pkgs; [
|
|
# Disk partitioning
|
|
parted
|
|
gptfdisk
|
|
dosfstools
|
|
cryptsetup
|
|
|
|
# Filesystem tools
|
|
e2fsprogs
|
|
btrfs-progs
|
|
ntfs3g
|
|
|
|
# Network
|
|
networkmanager
|
|
wpa_supplicant
|
|
|
|
# TUI
|
|
dialog
|
|
newt # provides whiptail
|
|
|
|
# Utilities
|
|
vim
|
|
git
|
|
curl
|
|
wget
|
|
jq
|
|
|
|
# NixOS installation
|
|
nixos-install-tools
|
|
];
|
|
|
|
# Auto-login to installer
|
|
services.getty.autologinUser = "nixos";
|
|
|
|
# Welcome message
|
|
environment.etc."motd".text = ''
|
|
|
|
╔═══════════════════════════════════════════════════════════╗
|
|
║ ║
|
|
║ Welcome to the Nomarchy Installer ║
|
|
║ ║
|
|
║ Run 'nomarchy-install' to begin installation ║
|
|
║ ║
|
|
║ For more information: https://github.com/blu/nomarchy ║
|
|
║ ║
|
|
╚═══════════════════════════════════════════════════════════╝
|
|
|
|
'';
|
|
|
|
# Copy installer script
|
|
system.activationScripts.installer = ''
|
|
mkdir -p /usr/local/bin
|
|
cat > /usr/local/bin/nomarchy-install << 'INSTALLER'
|
|
#!/usr/bin/env bash
|
|
# Nomarchy ISO Installer - coming soon
|
|
echo "ISO installer not yet implemented."
|
|
echo "Please use the NixOS manual installation process,"
|
|
echo "then run: nix run github:blu/nomarchy"
|
|
INSTALLER
|
|
chmod +x /usr/local/bin/nomarchy-install
|
|
'';
|
|
|
|
# User account
|
|
users.users.nixos = {
|
|
isNormalUser = true;
|
|
extraGroups = ["wheel" "networkmanager"];
|
|
initialPassword = "nomarchy";
|
|
};
|
|
|
|
# Allow passwordless sudo
|
|
security.sudo.wheelNeedsPassword = false;
|
|
|
|
# System state version
|
|
system.stateVersion = "24.11";
|
|
}
|