apps: scripts serving dotfiles purposesassets: media or files that don't fit in Nix fileshome-manager: Home Manager specificfragments: Home Manager configuration fragmentsprofiles: base Home Manager configurations to build upon (e.g.desktop,minimal)options.nix: Home Manager configuration options and flags
hosts: per-server configuration because a profile makes no senselib: additional custom lib and flake helpersmodules: modules that fill a missing feature of NixOS or Home Managernixos: NixOS related confighardware/<hostname>.nix: device-specific settings like settings generated bynixos-generate-configlayout/<layout>.nix:Diskodisk layouts used bymanagedDiskLayout(e.gluks-btrfs)fragments: opinionated NixOS configuration fragmentsprofiles/<profile>.nix: base system configurations to build upon (e.g.laptop,installer)options.nix: configuration options and flags
overlays: just plain Nix overlayspkgs: Custom packages either not eligible or missing from repositoriessecrets:agenixencrypted secrets and ssh keystemplates: quickstart files for different languagesglobals.nix: global values shared throughout the config (e.g. domains)
{
local.ports."<name>" = 4242; # Shorthand
local.ports."<name>" = {
number = 4242;
string = "4242"; # Read-only
public = true; # Opens firewall depending on tcp/udp value
tcp = true;
udp = false;
};
}{
local.flags = {
onlyCached = true; # dictate if you prefer to use cached pkgs
};
local.fragment."<name>".enable = true; # dictate whether to enable a fragment
}-
Copy template and replace
<name>with module name{ config, lib, ... }: let cfg = config.local.fragment.<name>; in { options.local.fragment."<name>".enable = lib.mkEnableOption '' <name> related Depends on: - [<Condition>] <dependency>: <reason> - ... ''; config = lib.mkIf cfg.enable { assertions = [ { assertion = config."<dependency>".enable; message = "<name> module depends on <dependency>"; } ]; # put the rest of the config here }; }
-
Add the newly created file to Git.
-
Add the new module to the import list in
<type>/fragments/default.nix. -
Activate the module in the wanted profile.
nix run nixpkgs#home-manager -- switch --flake .#lightweight- Rekey secrets with device root ssh key, and create a session age key.
Pull up your favorite ArchaicBackup disc
-
Set environment variables
RESTIC_REPOSITORY:/run/media/user/discname/RESTIC_PASSWORD_FILE: ? -
Initialize repository
restic init --repo /srv/restic-repo
nixos-anywhere --flake .#weird-row-server user@ip
nixos-rebuild switch \
--flake .#weird-row-server \
--target-host 2a01:4f8:c2c:76d2::1 \
--use-remote-sudo- Lanzaboote
- SystemD cryptenroll
Milo Moisson © 2023-2026