KISS NixOS configuration based on Flakes & flake-parts (supports macOS too)
Find a file
Sridhar Ratnakumar 4e14fa6512 Cleanup
2025-08-27 10:20:25 -04:00
.claude claude: add nixos-mcp 2025-08-24 13:31:26 -04:00
.github/workflows ci: Other platforms 2025-07-28 17:19:41 -04:00
.vscode vscode: nushell 2025-07-22 10:27:01 -04:00
configurations rss2email + msmtp (#95) 2025-08-27 10:11:03 -04:00
doom.d doom: disable 2024-11-18 12:04:59 -05:00
modules Cleanup 2025-08-27 10:20:25 -04:00
overlays Deleted some unused scripts 2025-07-13 16:44:07 -04:00
packages packages/ci: improv 2025-07-27 17:03:11 -04:00
secrets rss2email + msmtp (#95) 2025-08-27 10:11:03 -04:00
webapps Update omnix, and ditch treefmt 2025-02-09 10:01:15 -05:00
.envrc envrc: Fix devshell path 2025-06-25 18:06:30 +10:00
.gitattributes chore: Redundant entry 2024-06-21 19:46:58 -04:00
.gitignore treefmt: gg 2024-11-19 15:49:55 -05:00
.mcp.json claude: add nixos-mcp 2025-08-24 13:31:26 -04:00
config.nix Remove unused 2024-09-28 22:51:12 -04:00
flake.lock nix: Update inputs 2025-08-24 17:38:32 -04:00
flake.nix General cleanup: Not using Linux GUI 2025-08-24 13:47:55 -04:00
justfile justfile: refactor 2025-07-26 17:37:39 -04:00
README.md readme: Update 2025-08-24 13:49:31 -04:00

AGPL project chat Naiveté Compass of Mood

This repository contains the Nix / NixOS configuration for all of my systems. See nixos-unified—specifically nixos-unified-template—if you wish to create your own configuration from scratch.

Setup

To use this repository as base configuration for your new machine running:

NixOS Linux

Tip

For a general tutorial, see https://nixos.asia/en/nixos-install-flake

macOS

  • Install Nix
  • Clone this repo anywhere
  • Rename ./configurations/darwin/??.nix to match your current system hostname
  • Edit config.nix to set your primary user information
  • Run nix run.1 That's it. Re-open your terminal.

Architecture

Start from flake.nix (see Flakes). flake-parts is used as the module system.

Directory layout

Tip

See flake-module.nix for autowiring of flake outputs based on this directory structure.

Path Corresponding flake output
./configurations/{nixos,darwin,home}/foo.nix {nixos,darwin,home}Configurations.foo
./mdules/{nixos,darwin,home,flake-parts}/foo.nix {nixos,darwin,home,flake}Modules.foo
./overlays/foo.nix overlays.foo
./packages N/A (Nix packages)
./secrets N/A (agenix data)

Tips

  • To update NixOS (and other inputs) run nix flake update
    • You may also update only primary inputs:
      # nix run .#update
      
  • To free up disk space,
    sudo nix-env -p /nix/var/nix/profiles/system --delete-generations +2
    sudo nixos-rebuild boot
    
  • To autoformat the project tree using nixpkgs-fmt, run just lint in Nix devShell.
  • To build all flake outputs (locally or in CI), run nix run nixpkgs#omnix ci
  • For secrets management, I use agenix, because it works with SSH keys, and functions well on macOS and NixOS.

Discussion

If you wish to discuss this config, join the NixOS Asia community.


  1. You might have to rm -rf /etc/nix/nix.conf, so our flake.nix can do its thing. ↩︎