KISS NixOS configuration based on Flakes & flake-parts (supports macOS too)
Find a file
Sridhar Ratnakumar 67e9539353 add Jenkins CI
2023-07-13 16:47:27 -04:00
.vscode .vscode: add nushell 2023-06-28 15:19:24 -04:00
home Define overlays properly 2023-07-08 22:00:19 -04:00
nix-darwin Rename for clarity 2023-04-27 09:31:29 -04:00
nixos Remove redundant inputs (they are in jenkins-nix-ci overlay) 2023-07-13 16:45:49 -04:00
systems add wezterm 2023-07-03 21:31:06 -04:00
users Remove uday 2023-03-15 13:57:41 -04:00
.envrc flake'ify shell.nix 2022-05-08 10:25:46 -04:00
.gitattributes Add jenkins (#34) 2023-03-20 14:32:03 -04:00
.gitignore add direnv 2022-04-28 14:47:41 -04:00
.sops.yaml sops: yaml -> json 2023-05-15 12:22:47 -04:00
flake.lock Remove redundant inputs (they are in jenkins-nix-ci overlay) 2023-07-13 16:45:49 -04:00
flake.nix Remove redundant inputs (they are in jenkins-nix-ci overlay) 2023-07-13 16:45:49 -04:00
Jenkinsfile add Jenkins CI 2023-07-13 16:47:27 -04:00
README.md readme: nw 2023-04-26 09:01:21 -04:00
secrets.json sops: yaml -> json 2023-05-15 12:22:47 -04:00

This repository contains the Nix / NixOS configuration for all of my systems. See nixos-flake if you want to create your own configuration from scratch.

Setup

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

NixOS Linux

macOS

  • Install Nix
  • Install nix-darwin
    • This will create a ~/.nixpkgs/darwin-configuration.nix, but we do not need that.
  • Clone this repo anywhere
  • Edit flake.nix to use your system hostname as a key of the darwinConfigurations set
  • Edit users/config.nix to contain your users
  • 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

  • home: home-manager config (shared between Linux and macOS)
  • nixos: nixos modules for Linux
  • nix-darwin: nix-darwin modules for macOS
  • users: user information
  • secrets.yaml (and .sops.yaml): sops-nix secrets
  • systems: top-level configuration.nix('ish) for various systems

Tips

  • To update NixOS (and other inputs) run nix flake update
    • You may also update a subset of inputs, e.g.
      nix flake lock --update-input nixpkgs --update-input darwin --update-input home-manager
      # Or, `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 nix fmt.

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