Skip to content

Lehmanator/nix-configs

Repository files navigation

Nix / NixOS Configs

❄️ Welcome! ❄️

built with nix

What do we have here?

  • Work-in-progress set of NixOS configs.
  • Catalog of bad decisions I have made throughout my Nix journey (refactor in progress).
  • Collection of personal NixOS & home-manager profiles (each with varying degrees of maintainence).
  • My personal NixOS configurations.
  • Living document of my learning process with Nix & the many tragedies I have overcome.

If you are an end-user, you may find some stuff here that you find useful. You'll have to dig through the rest to find it.

As of now, this repo is only intended for personal use. Exported outputs are not intended to be consumed by other flakes. This may change eventually.

More documentation & information can be found in: ./docs

History & Backstory

I have been going back-and-forth between using several Nix libs to organize my stuff. Still haven't settled on which I'd ultimately prefer to use, so there exists a lot of unused boilerplate specific to each framework I have messed around with.

These include:

Previously including:

Outputs

  • nixosConfigurations
  • packages
  • devShells

Planning & To-Dos

Near-future

  • Start adding secrets encrypted with sops-nix.

  • Disko-ify my existing machines.

    • fw
    • wyse
    • fajita (possible to do with mobile-nixos? systemd-repart?)
  • Secure Boot on everything via lanzaboote.

  • Ephemeral configs via impermanence.

  • Custom NixOS installer image with:

    • Nix experimental-features enabled by default: nix-command, flakes, recursive-nix, ca-derivations.
    • Ready for full-disk-encryption & secure boot with resume from hibernate out of the box.
    • Disko package pre-loaded.
    • packages.${system}.bootstrap-disko-select to present TUI to select from diskoConfigurations to pass to installer.
    • packages.${system}.bootstrap-new-system to build new system config from existing nixosConfigurations and runtime data.
    • packages.${system}.bootstrap-secrets to transform existing nixosConfigurations to use combination of newly-generated and inherited secret values.

Configuration Types

Other types of Nix-based configurations to define.

System Types

  • nixOnDroidConfigurations - nix-on-droid configurations for custom Nix-based environment in Android / Termux.

System Images

  • openwrtConfigurations - OpenWRT custom router OS configurations (See: ./docs/configs/openwrt.md)
  • robotnixConfigurations - robotnix configurations for custom Android OS images.

Hardware Configurations

  • diskoConfigurations - disko configurations for hard disk layouts.

Editor Configurations

  • nixvimConfigurations - nixvim configurations for Neovim configs.

    • Modularized to exist as:
      • Standalone Neovim wrapper
      • NixOS profile
      • home-manager profile.
  • codiumConfigurations akin to nixvimConfigurations, but for VSCodium.

  • helixConfigurations akin to nixvimConfigurations, but for Helix.

  • editorConfigurations akin to nixvimConfigurations, but abstracted to many editors.

    • Possible conversion util / lib.

Infrastructure

  • Kubernetes cluster from various machines.
  • Migration of my Kubernetes manifests & Helm charts to Nix
  • Netboot server & config images
  • Binary cache & remote builders
  • NUR repo & overlays
  • Terranix configs

Modules

  • Flakify mobile-nixos/mobile-nixos
  • Genericize configuration options between Chromium & Firefox.
  • LDAP directory trees as Nix config.

Packages

  • GNOME apps missing from nixpkgs

Ideas n stuff

  • homeConfigurations as a composition of devShells