You are not logged in. Log in. Or Sign up.
Vervis @
HomeSharersbqvReposnixrcFiles live

Structured flake-based NixOS configuration

[[ 🧙 bqv ]] :: [📥 Inbox] [📤 Outbox] [🐤 Followers] [🐔 Following] [🏗 Projects] [🗃 Repositories] [🔁 Workflows] [🐛 Tickets]
[[ 🗃 nixrc ]] :: [📥 Inbox] [📤 Outbox] [🐤 Followers] [🤝 Collaborators] [🛠 Commits] [🧩 Merge Requests]


  • live
  • master
  • sops
  • template
  • waymonad-hacking
  • weak-builder-refs
  • zz-prog
  • Tags

    live ::


    🗎 .dir-locals.el
    🗎 .envrc
    🗀 .git-crypt
    🗎 .gitattributes
    🗎 .gitignore
    🗀 .hg
    🗀 apparmor
    🗎 configuration.nix
    🗀 containers
    🗀 deploy
    🗀 emacs
    🗎 flake.lock
    🗎 flake.nix
    🗀 hosts
    🗀 lib
    🗀 modules
    🗀 overlays
    🗀 pkgs
    🗀 profiles
    🗀 secrets
    🗎 shell.nix
    🗀 users

    #+title: NixOS System Configuration
    #+author: bqv
    #+OPTIONS: toc:nil num:nil
    * What's this?
    A NixOS configuration repository using the experimental flakes mechanism.
    Its aim is to provide a generic repository which neatly separates concerns
    and allows one to get up and running with NixOS faster than ever.
    A configuration.nix is provided for compatibility with `nix repl`
    * Build
    If you don't have direnv/lorri, there is a devShell (and a shell.nix shim).
    I use a fork of nixus to deploy to multiple systems coherently. The deploy script
    is built by defaultPackage as well as run by defaultApp. E.g. `nix run`
    If you're on NixOS but your system nix does not support flakes, you can bring a
    working version into scope, with the following:
    #+BEGIN_SRC sh
      nix-shell -p nixUnstable
      alias nix="nix --experimental-features 'nix-command flakes'"
    * Flake Structure:
    ** Hosts
    Host specific config in hostname directories. I want to keep these thin.
    ** Profiles
    A module of nix code with few or no options, shared between hosts. Ideally
    always a default.nix, but I've broken this rule.
    ** Users
    User declarations on the toplevel, with home-manager "profiles" (as above) in
    ** Deploy
    This is my forked version of, amended to use execline
    for speed, stability, and extreme hackability.
    ** Lib
    ** Secrets
    _These are not the files you're looking for_. Everything in here encrypted with
    [[][git-crypt]], for now. Legacy will ideally
    eventually be assimilated, but for now things there contain a few too many
    secrets and shameful code patterns
    ** Emacs
    Emacs package definitions modules, one file per package, auto-imported, for
    reference when building ~/.emacs.d/init.el
    ** Modules
    Module definitions for nixos, home-manager, emacs, and nixus, as collated in
    the lists home.nix, nixos.nix, etc.
    ** Pkgs
    Package definitions a-la nixpkgs, collated into an overlay in default.nix
    ** Containers
    Container machine definitions, for import in host definitions.
    ** Overlays
    Overlay definitions, all auto-imported, for simple package overrides and
    sketching new packages
    ** Apparmor
    This contains a vast array of profiles for apparmor that I aim to port to my
    system and use, eventually so my system can be full-system apparmor enforced.
    [See repo JSON]