this is where my configuration for everything is related.
- system configuration definitions
- my desktop (bastion)
- my laptop (voyager)
- my nas (quasar)
- home manger configurations
- all of the above systems
- my steamdeck (deck)
- automatic deployments via github actions and cachix-deploy
- secrets management via sops-nix
- custom package definitions
- custom nixos/home-manager modules and service definitions
- modules and configurations for many nas-related services
- pick & choose base system & desktop modules for consistency across systems
highlights:
- multi-system nixOS & home-manager configuration with flake-parts for easy composition
- rebuild locally with
nrs
(alias fornh os switch
, improvedsudo nixos-rebuild
), and remotely withnix run .#deploy [<target>|all]
- deployment secrets using sops-nix
- mesh networked hosts with tailscale
- extensively configured window manager (bspwm), cli (fish), and editor (neovim)
this section is not updated in-sync with the actual repository, but should give a good 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.bastion
: desktop - 32GB RAM, R9 5900X, RX 7900XT | BSPWMvoyager
: dell xps 15 - 16GB RAM, i7 9750H, GTX 1650 | BSPWMquasar
: home server - 32GB RAM, i7 6700K, GTX 970 | headless
home
: home-manager configuration, acessible viahome-manager --flake
each host has a file, and there's acommon
folder for shared configurations.modules
: module definitions consumed by the hosts.nixos
: nixOS modules, such as custom services, hardware configurations, etc.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:
- bspwm + xidlehook + betterlockscreen
- polybar
- neovim
- fish
- kitty
- firefox
- tailscale
- podman
- rofi
- bat + fd + rg
- kdeconnect
let me know if you have any questions about them :)
that's how my bspwm desktop setup look like (as of 2023 December).