This commit applies comprehensive syntactic improvements across the
repository to conform to NixOS formatting and coding standards.
## Formatting Fixes
- Remove extra newlines and blank spaces
- Fix empty list formatting: [ ] → []
- Remove trailing whitespace
- Standardize indentation in libvirtd config
## Best Practices
- Remove deprecated networking.useDHCP setting
- Remove unused extraHosts configuration
- Add lib.mkDefault to videoDrivers for better override support
- Add lib.mkDefault to podman for consistency
## Modern Conventions
- Update nix.settings.download-buffer-size to string format with units ("512M")
- Update system.stateVersion from 25.05 to 25.11 to match channel
- Update home.stateVersion from 25.05 to 25.11 to match channel
## Code Quality
- Remove commented-out code in aurora.nix
- Improve comment spacing and capitalization
- Standardize attribute set formatting across files
## Files Modified
- flake.nix
- desktop/virtualization.nix
- systems/aurora.nix
- systems/common.nix
- systems/labrizor.nix
- systems/skip01.nix
- users/jsutter.nix
Tested: Successfully rebuilt and switched framework system
This commit resolves multiple deprecation warnings and errors that were
preventing the NixOS configuration from being built successfully.
## Changes Made
### 1. Git Configuration Options (Home Manager)
**Affected Files:**
- users/jsutter.nix
- users/isutter.nix
- users/aksutter.nix
**Changes:**
- Migrated from deprecated `userName` and `userEmail` options to new
`settings.user.name` and `settings.user.email` syntax
- Migrated from deprecated `extraConfig` to inline `settings` format
- This aligns with Home Manager's new git configuration structure
**Before:**
```nix
programs.git = {
userName = "Julian Sutter";
userEmail = "jsutter@symbiotip.com";
extraConfig = { core.editor = "nano"; };
};
```
**After:**
```nix
programs.git = {
settings = {
user = {
name = "Julian Sutter";
email = "jsutter@symbiotip.com";
};
core.editor = "nano";
};
};
```
### 2. Systemd Logind Options
**Affected File:** systems/framework.nix
**Changes:**
- Migrated from deprecated direct options to new nested settings syntax
- All logind power management options now use `settings.Login.*` format
**Before:**
```nix
services.logind = {
lidSwitch = "suspend-then-hibernate";
lidSwitchDocked = "ignore";
};
```
**After:**
```nix
services.logind = {
settings = {
Login = {
HandleLidSwitch = "suspend-then-hibernate";
HandleLidSwitchDocked = "ignore";
};
};
};
```
### 3. Display Manager Configuration
**Affected File:** desktop/plasma.nix
**Changes:**
- Removed deprecated `services.xserver.displayManager.gdm.enable`
- Configuration now uses `services.displayManager.gdm.enable` exclusively
- Added explanatory comment about the deprecation removal
### 4. Package Deprecations
**Affected Files:**
- users/aksutter.nix
- users/isutter.nix
**Changes:**
- Replaced deprecated `pinentry` package with `pinentry-gnome3`
- The generic `pinentry` package has been split into specific variants
- `pinentry-gnome3` was already in use elsewhere in plasma.nix
### 5. NixOS System Parameter
**Affected File:** flake.nix
**Changes:**
- Updated system parameter handling to address deprecation warning
- Changed from `inherit system` to `inherit (localSystem) system`
- Renamed `system` variable to `localSystem` with explicit system attribute
**Before:**
```nix
let
system = "x86_64-linux";
commonSpecialArgs = {
pkgs-unstable = import nixpkgs-unstable {
inherit system;
```
**After:**
```nix
let
localSystem = {
system = "x86_64-linux";
};
commonSpecialArgs = {
pkgs-unstable = import nixpkgs-unstable {
inherit (localSystem) system;
```
## Verification
### Build Status
✅ All three system configurations build successfully:
- framework
- aurora
- labrizor
### Flake Check Results
✅ `nix flake check` passes without errors
✅ Only remaining warning is from external flake-utils dependency
in octofriend subflake, which does not affect functionality
### Framework Build Results
✅ `sudo nixos-rebuild build --flake .#framework` completed successfully
✅ New configuration path:
/nix/store/6wci3m6qnzphw75b0j7lmx1gjqphry3n-nixos-system-framework-25.11.20260203.e576e3c
## Impact
### User Impact
- Git configuration behavior remains unchanged
- Logind power management behavior unchanged
- Login/logout experience identical
- No functional changes to user experience
### System Impact
- All configurations now use modern NixOS 25.11 syntax
- Future-proofed against upcoming deprecation removals
- Maintains consistency across all managed systems
## Testing Recommendations
Before deploying to production:
1. Test on non-critical systems first (labrizor)
2. Verify all services start correctly after switch
3. Confirm user git configurations work as expected
4. Test lid switch behavior on framework laptop
5. Verify GPG pinentry prompts work correctly
## Related NixOS Documentation
- Home Manager git options: https://nix-community.github.io/home-manager/options.xhtml#opt-programs.git.enable
- Systemd logind settings: https://search.nixos.org/options?query=services.logind
- NixOS 25.11 release notes for deprecation details
This commit updates various configuration modules to improve system
functionality and maintain consistency across all managed machines.
## Changed Files
### flake.nix
- Updated to use nixos-25.11 channel (previously 25.05)
- Updated home-manager to release-25.11
- Added octofriend local flake reference
- Simplified commonDesktopModules structure
- Updated framework configuration with additional desktop modules (dnm, stp-elc-udmshare)
### flake.lock
- Updated lock file to reflect new flake inputs and dependency versions
### systems/common.nix
- Updated system stateVersion from "25.05" to "25.05"
- Added more system packages for system administration:
- kopia (backup tool)
- dig (DNS lookup utility)
- pv (pipe viewer for progress monitoring)
- whois (network information lookup)
- mesa-demos (OpenGL/demos for graphics testing)
- Added kdePackages.xdg-desktop-portal-kde for better desktop integration
- Maintained all existing hardware, networking, bootloader, and service configurations
### systems/framework.nix
- Maintained existing Framework laptop specific configurations:
- AMD GPU support with microcode updates
- Custom kernel parameters (mem_sleep_default=s2idle)
- Power management (power-profiles-daemon enabled, TLP/thermald disabled for AMD)
- Logind lid switch configuration (suspend-then-hibernate on lid close)
- Swapfile configuration (10GB size)
- Brightness control via acpilight
- SSD optimization with fstrim
- Added user packages: via (keyboard configurator), radeontop (AMD GPU monitor)
### users/jsutter.nix
- Enhanced Home Manager configuration:
- Updated stateVersion to "25.05"
- Added Zed editor configuration with AI model integration:
- Configured SyntheticL API endpoint for GLM-4.7 model
- Added extensions: nix, markdown, toml, go, dracula
- Included extra packages for language support (nixd, nil, gopls)
- Updated VSCode extensions list with Claude dev support
- Added Micro editor as alternative light editor
- Maintained all existing user packages, SSH keys, and base configurations
### desktop/media.nix
- Updated multimedia application packages for enhanced media handling
### desktop/plasma.nix
- Updated Plasma desktop environment packages and configurations
### desktop/virtualization.nix
- Updated virtualization settings and package versions
## Testing Notes
- All changes should be tested with 'nix flake check' to verify syntax
- Run 'sudo nixos-rebuild dry-run --flake .#framework' before applying
- Verify that all services start correctly after rebuild
## Impact Scope
- Affects all three managed systems: framework, aurora, labrizor
- Primary focus on framework laptop configuration as primary development machine
- Home Manager changes only affect jsutter user account
- Add modular pinning system using NixOS module options
- Each desktop module now defines its own pinned applications:
* plasma.nix: konsole, dolphin, firefox, tigervnc
* gaming.nix: steam, discord
* office.nix: slack, signal, libreoffice-writer, libreoffice-calc
* dev.nix: windsurf
* media.nix: rustdesk
* dnm.nix: tor-browser, kleopatra (moved from crypto.nix)
- Move Plasma config from user-specific to desktop module for consistency
- Rename crypto.nix to dnm.nix and update references
- All users with Plasma desktop get automatic taskbar pinning
- Applications only appear when their desktop modules are active
- Move GUI applications from users/jsutter.nix to appropriate desktop modules:
* office.nix: slack, signal-desktop
* gaming.nix: discord, stremio
* plasma.nix: arc-theme, pinentry, tigervnc
* dev.nix: putty
* media.nix (new): vlc, deluge
- Create systems/common-headless.nix for server configurations:
* Remove GUI dependencies (Flatpak, XDG portals, fonts, graphics drivers)
* Include only essential CLI tools and server packages
* Disable X server completely
- Simplify skip01 configuration:
* Remove Intel graphics drivers and OpenGL support
* Use headless common configuration
* Keep unified users/jsutter.nix (no split files)
- Update flake.nix to include new media.nix module in desktop systems
Result: Clean separation between desktop and headless configurations
with improved modularity and maintainability.
- Extract common specialArgs into reusable commonSpecialArgs variable
- Create mkSystem helper function to eliminate duplication
- Extract commonDesktopModules for shared desktop configurations
- Reduce flake.nix from ~90 lines to ~60 lines with better maintainability
- All system configurations (framework, aurora, labrizor, skip01) now use consistent pattern
- Maintain full functionality while dramatically reducing code duplication
Benefits:
- Single source of truth for specialArgs configuration
- Easier to add new systems or modify existing ones
- More maintainable and readable code structure
- Consistent unstable package access across all systems
- Add nixpkgs-unstable input to flake.nix
- Configure specialArgs to pass pkgs-unstable to all system configs
- Update desktop/dev.nix to use windsurf from unstable packages
- Create comprehensive documentation in README-hybrid-packages.md
- Enable selective use of cutting-edge packages while maintaining system stability
Usage: Add pkgs-unstable parameter to any .nix file and use pkgs-unstable.package-name
Example: pkgs-unstable.windsurf for latest Windsurf editor
- Created systems/skip01.nix with 13th gen Intel i5 NUC optimizations
- Configured for headless server operation with SSH access
- Enabled Docker and Podman for container services
- Added Intel graphics support and thermal management
- Network performance tuning for server workloads
- Added skip01 to flake.nix nixosConfigurations