Initial commit: Nomarchy NixOS configuration
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>
This commit is contained in:
116
iso/default.nix
Normal file
116
iso/default.nix
Normal file
@@ -0,0 +1,116 @@
|
||||
# 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";
|
||||
}
|
||||
Reference in New Issue
Block a user