Skip to content
Oeiuwq Faith Blog OpenSource Porfolio

Alb-O/autix.json
{
"createdAt": "2025-09-21T13:45:00Z",
"defaultBranch": "main",
"description": null,
"fullName": "Alb-O/autix",
"homepage": null,
"language": "Nix",
"name": "autix",
"pushedAt": "2025-11-24T01:09:14Z",
"stargazersCount": 5,
"topics": [],
"updatedAt": "2025-11-24T01:09:17Z",
"url": "https://github.com/Alb-O/autix"
}

A modular NixOS and Home Manager configuration using the aspect system.

modules/
├── aspect/
│ ├── aggregate.nix
│ └── options.nix
├── flake/
│ ├── core.nix
│ ├── formatter.nix
│ ├── nixconfig.nix
│ └── readme/
├── hm/
│ ├── ast-grep/ # Fast and polyglot tool for code searching, linting, rewriting at large scale
│ ├── blender/ # Helper script for Blender daily builds.
│ ├── clipboard/ # Wayland clipboard manager service.
│ ├── codex/ # Codex CLI tooling.
│ ├── env/
│ ├── firefox/ # Firefox config, including policies, profiles and NUR overlay extensions.
│ ├── formatter/ # Formatter definitions and helper packages.
│ ├── fzf/ # Configure fzf with custom defaults.
│ ├── gemini/ # Google Gemini CLI.
│ ├── git/ # Git configuration with helpful defaults.
│ ├── git-sparta/ # git-sparta CLI integration for git attribute sparse workflows & tagging.
│ ├── hydrus/ # Hydrus client launcher with Wayland-friendly defaults.
│ ├── kakoune/ # Kakoune editor configuration and plugins.
│ ├── kitty/ # Kitty terminal with themed configuration.
│ ├── lazygit/ # Lazygit configuration.
│ ├── lsp/ # Shared Language Server Protocol tooling.
│ ├── mako/ # Mako notification daemon for graphical profiles.
│ ├── mcp/ # MCP Servers configuration.
│ ├── mpv/ # MPV media player defaults.
│ ├── nh/ # Utility script collection for nohup helper (nh).
│ ├── nushell/ # Nushell - A new type of shell.
│ ├── opencode/ # OpenCode configuration.
│ ├── polkit/ # Polkit agent for graphical sessions.
│ ├── sillytavern/ # SillyTavern launcher and desktop entry.
│ ├── tmux/ # Tmux, primarily for agents interactive usage.
│ ├── vscode/ # Visual Studio Code (unfree) enablement.
│ ├── xdg/ # XDG base directory layout and session tweaks.
│ ├── yazi/ # Setup Yazi terminal file manager.
│ ├── youtube-music/ # Electron wrapper around YouTube Music
│ ├── zk/ # Zettelkasten CLI (zk) configuration.
│ └── zoxide/ # Enable zoxide jump navigation.
├── hosts/
│ ├── compose.nix
│ ├── desktop/
│ ├── options.nix
│ └── wsl/ # NixOS-WSL integration for Windows Subsystem for Linux.
├── profiles/
│ ├── albert/ # Base user configuration for Albert O'Shea.
│ ├── default.nix
│ └── options.nix
└── sys/
├── cli/ # Common CLI tooling bundle.
├── essential/ # Baseline essential packages for all profiles and hosts.
├── fonts/ # Shared font bundle and defaults.
├── gdm/ # GNOME Display Manager.
├── gnome-services/ # GNOME keyring and supporting services.
├── graphical/ # Graphical desktop utilities bundle.
├── keyboard/ # Swap Caps Lock and Escape via keyd.
├── netshare/ # NFS/CIFS client tooling.
├── networking/ # Networking defaults for NetworkManager.
├── niri/ # Niri Wayland compositor and related tooling.
├── nix-settings/ # Shared Nix daemon and nixpkgs defaults.
├── shell-init/ # Ensure login shells hand over to fish with XDG-aware history.
├── sops-nix/ # Atomic secret provisioning for NixOS based on sops.
├── ssh/ # SSH client defaults and server hardening.
├── tty/ # kmscon font defaults for virtual consoles.
├── wayland/ # Wayland-first session defaults.
└── wsl/ # NixOS-WSL integration for Windows Subsystem for Linux.

Files/directories prefixed with _ or . are ignored by auto-import. All .nix files in modules/ are automatically imported as flake-parts modules.

Autix uses a modular aspect system for configuration. Each aspect represents a logical unit of functionality that can target specific hosts or profiles.

AspectDescriptionScopes
albertBase user configuration for Albert O’Shea.NixOS, Home
ast-grepFast and polyglot tool for code searching, linting, rewriting at large scaleHome
blenderHelper script for Blender daily builds.Home
cliCommon CLI tooling bundle.Home
clipboardWayland clipboard manager service.Home
codexCodex CLI tooling.Home
essentialBaseline essential packages for all profiles and hosts.NixOS, Home
firefoxFirefox config, including policies, profiles and NUR overlay extensions.Home
fontsShared font bundle and defaults.NixOS, Home
formatterFormatter definitions and helper packages.Home
fzfConfigure fzf with custom defaults.Home
gdmGNOME Display Manager.NixOS
geminiGoogle Gemini CLI.Home
gitGit configuration with helpful defaults.Home
git-spartagit-sparta CLI integration for git attribute sparse workflows & tagging.Home
gnome-servicesGNOME keyring and supporting services.NixOS
graphicalGraphical desktop utilities bundle.Home
hydrusHydrus client launcher with Wayland-friendly defaults.Home
kakouneKakoune editor configuration and plugins.Home
keyboardSwap Caps Lock and Escape via keyd.NixOS
kittyKitty terminal with themed configuration.Home
lazygitLazygit configuration.Home
lspShared Language Server Protocol tooling.Home
makoMako notification daemon for graphical profiles.Home
mcpMCP Servers configuration.Home
mpvMPV media player defaults.Home
netshareNFS/CIFS client tooling.NixOS
networkingNetworking defaults for NetworkManager.NixOS, Home
nhUtility script collection for nohup helper (nh).Home
niriNiri Wayland compositor and related tooling.NixOS, Home
nix-settingsShared Nix daemon and nixpkgs defaults.NixOS
nushellNushell - A new type of shell.Home
opencodeOpenCode configuration.Home
polkitPolkit agent for graphical sessions.Home
shell-initEnsure login shells hand over to fish with XDG-aware history.NixOS
sillytavernSillyTavern launcher and desktop entry.Home
sops-nixAtomic secret provisioning for NixOS based on sops.NixOS, Home
sshSSH client defaults and server hardening.NixOS, Home
tmuxTmux, primarily for agents interactive usage.Home
ttykmscon font defaults for virtual consoles.NixOS
vscodeVisual Studio Code (unfree) enablement.Home
waylandWayland-first session defaults.NixOS, Home
workspaceSession environment defaults for shells and direnv.Home
wslNixOS-WSL integration for Windows Subsystem for Linux.NixOS, Home
xdgXDG base directory layout and session tweaks.Home
yaziSetup Yazi terminal file manager.Home
youtube-musicElectron wrapper around YouTube MusicHome
zkZettelkasten CLI (zk) configuration.Home
zoxideEnable zoxide jump navigation.Home

Aspects are defined in modules/ directories and automatically aggregated by the build system. Each aspect can contribute:

  • Modules for NixOS or Home Manager
  • Overlays for package customization
  • Unfree package permissions
  • Binary cache substituters and keys

See [modules/aspect/options.nix]!(modules/aspect/options.nix) for the full aspect schema.

Profiles define Home Manager configurations. Each profile specifies:

  • User account
  • System architecture
  • Additional custom modules

Available profiles:

  • albert-desktop: User albert
  • albert-wsl: User albert

Build a profile:

Terminal window
$ nix build .#homeConfigurations.<profile>.activationPackage

See [modules/hm/+profiles/options.nix]!(modules/hm/+profiles/options.nix) for profile options.

Host configurations for NixOS systems:

  • desktop: x86_64-linux, profile: albert-desktop
  • wsl: x86_64-linux, profile: albert-wsl

Build a host configuration:

Terminal window
$ nixos-rebuild switch --flake .#<hostname>

See [modules/sys/hosts/options.nix]!(modules/sys/hosts/options.nix) for host options.

Terminal window
$ just regen # Regenerate generated files and format the tree
$ just check # Run regen followed by nix flake check --no-update-lock-file

This project uses flake-file for modular flake management:

Terminal window
$ nix run .#write-flake
Terminal window
$ nix flake update
Terminal window
$ nix fmt

This README and other generated files are kept in sync with Nix definitions:

Terminal window
$ nix run .#write-files
Terminal window
$ nix flake check

Autix ships the local [git-sparta]!(git-sparta/README.md) tool for attribute-driven sparse workflows. Helpful entry points:

  • nix run .#git-sparta -- --help or just sparta-run -- --help for command discovery.
  • just sparta-tags tag=<name> launches the interactive tag browser (add repo=<path> to scan another checkout, yes=true to bypass the TUI, and theme=<name> to pick a theme).
  • just sparta-setup and just sparta-teardown wrap the submodule lifecycle commands.
  • Git aliases (git sparta, git sparta-tags, etc.) forward directly to the packaged binary.

See [LICENSE]!(LICENSE) file.