Skip to content

Test and finalize server (NixOS) configuration #13

@patflynn

Description

@patflynn

Overview

This issue tracks the testing and finalization of the server NixOS configuration on a real server running NixOS.

Prerequisites

  • A server machine running NixOS
  • Git installed
  • Root access (for system configuration)
  • SSH access (if testing remotely)

Test Steps

1. Clone and prepare the repository

# Clone the repository if you haven't already
git clone https://github.com/patflynn/cosmo.git
cd cosmo

# Create a new branch for your changes
git checkout -b test-server-config

2. Copy hardware configuration

# If testing on the existing server, copy its hardware configuration
cp /etc/nixos/hardware-configuration.nix modules/hosts/server/

# If using the nix-basic configuration, also copy from there
# cp nix-basic/hardware-configuration.nix modules/hosts/server/

3. Update server-specific settings

Review and update the following files as needed:

  • modules/hosts/server/default.nix:
    • Update hostname
    • Configure media mounts and filesystem options
    • Set up Tailscale configuration
    • Disable sleep settings as needed
  • modules/common/users.nix: Ensure SSH keys and user settings are correct

4. Test the configuration

# Run a test build (this won't change your system)
sudo nixos-rebuild test --flake .#server

# If there are errors, adjust the configuration files and test again

5. Switch to the new configuration

Once testing is successful, switch to the new configuration:

sudo nixos-rebuild switch --flake .#server

6. Verify functionality

  • Ensure the system boots correctly after reboot
  • Check that all hardware is properly detected and working
  • Verify that networking, SSH, and other services work as expected
  • Test mounted filesystems and storage
  • Verify Tailscale connectivity if used
  • Check that auto-update settings work as expected

7. Document issues and changes

Make note of any issues encountered and changes needed to make the configuration work:

  • Hardware-specific adjustments
  • Network configuration changes
  • Service configuration changes

8. Commit your changes

git add modules/hosts/server/
git commit -m "Update server configuration based on testing"
git push -u origin test-server-config

9. Create a pull request

gh pr create --title "Finalize server configuration" --body "Based on testing on real server hardware"

Acceptance Criteria

  • System successfully boots with the new configuration
  • All hardware components function correctly
  • Network services and remote access work as expected
  • Storage and filesystems are properly mounted
  • Auto-update and maintenance processes work correctly
  • Changes are committed and pull request created

Notes

  • Be careful when testing on a production server - have a backup plan in case of issues
  • Consider testing on a staging server first if possible
  • Document any service configuration changes needed
  • If major architectural changes are needed, consider creating separate issues

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions