this is where my configuration for everything is related.
- system configuration definitions:
- my desktop (
bastion
) - my laptop (
voyager
) - my home server (
quasar
) - my steam deck (
deck
) - custom installation/recovery media (
nixiso
)
- my desktop (
- automatic deployments via github actions and cachix-deploy (also deploy-rs)
- secrets management via sops-nix
- custom package definitions
- custom nixos & home-manager modules and service definitions
- modules and configurations for many nas/homelab related services
- configurable base & desktop modules for consistency across systems
- custom desktop, window manager, cli, and editor configurations
- modules for software that doesn't exist in nixpkgs/home-manager
- custom shell, accessible from anywhere with
nix develop --impure github:redxtech/nixfiles#remote
- includes important cli tools
- configures nix to use flakes and nix-command
- starship prompt
highlights:
- multi-system nixOS & home-manager configuration with flake-parts for easy composition
- rebuild locally with
nrs
(alias fornh os switch
, improvednixos-rebuild
), and remotely withnix run .#deploy [<target>|all]
- deployment secrets using sops-nix
- mesh networked hosts with tailscale
- extensively configured window manager (hyprland), cli (fish with custom starship prompt), and editor (neovim)
this section is not updated in-sync with the actual repository, but should give a decent idea of what to expect
flake.nix
: entrypoint for hosts and home configurations. also exposes a devshell for boostrapping (nix develop
).hosts
: nixOS Configurations, accessible vianixos-rebuild --flake
.common
: shared configurations consumed by each host. users, etc.bastion
: desktop - 32GB RAM, R9 5900X, RX 7900XT | hyprlandvoyager
: framework 16 - 32GB RAM, R9 7940HS, RX 7700S | hyprlandquasar
: home server - 32GB RAM, i7 6700K, GTX 970 | headlessdeck
: steam deck - 16 GB RAM, custom AMD APU | steamOS & gnome
home
: home-manager configuration, acessible viahome-manager --flake
each host has a file, and there's ashared.nix
file for shared configurations.modules
: module definitions consumed by the hosts.nixos
: nixOS modules, such as custom services, hardware configurations, etc.base
,desktop
,nas
, andbackup
modules.
home-manager
: home-manager modules, such as custom desktop, window manager, cli, and editor configurations.flake
: flake-parts modules used for composition, such as shells, overlays, nix config, deployments, etc.
pkgs
: my custom packages. also accessible vianix build
. you can compose these into your own configuration by using my flake's overlay (github:redxtech/nixfiles#overlays.default
), or consume them through NUR (soon ??).
it's definitely not for everyone, but it happens to be exactly what i've been looking for in a distro. if you're not turned off by the initial learning curve, the cryptic error messages, and the occasional stress-induced-baldness, you might be able to see how powerful nixOS can be.
all you need is nix 2.4+, git, and to have already enabled flakes
and
nix-command
, you can also use the command:
nix develop
nixos-rebuild --flake .
To build system configurations
home-manager --flake .
To build user configurations
nix build
(or shell or run) To build and use packages
sops
To manage secrets
for deployment secrets (such as user passwords and server service secrets), I'm
using the awesome sops-nix
. All secrets
are encrypted with my personal PGP key (stored on a YubiKey), as well as the
relevant systems's SSH host keys.
most relevant user apps daily drivers:
- hyprland + hypridle + hyprlock
- limbo (my custom status bar)
- neovim
- fish
- kitty
- firefox
- tailscale
- podman
- fuzzel/tofi
- bat + fd + rg
let me know if you have any questions about them :)
this is how my hyprland desktop setup looks (as of july 2024).