Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
26 commits
Select commit Hold shift + click to select a range
94d904f
flake.lock: Update
TLATER May 30, 2026
917bd81
update(pkgs): Update sources of all downstream packages
TLATER May 30, 2026
ef5179e
chore(work/networking): Remove mikan-guest
tlater-famedly Mar 13, 2026
fe28047
chore(work): Remove superfluous graphics driver addition
tlater-famedly Mar 13, 2026
16cfb6b
feat(networking/work): Add TGR wifi definition
tlater-famedly Sep 4, 2025
c63f9ec
feat(rin): Switch to new osquery
tlater-famedly May 13, 2026
b9b1d5d
update(nixos): Update to NixOS 26.05
tlater-famedly Jun 5, 2026
e2956c7
chore(treewide): Get rid of sops-nix
tlater-famedly Jun 9, 2026
dcf5ba6
WIP: refactor(treewide): Move to flake-parts
tlater-famedly Jun 12, 2026
33fb221
WIP: No idea, lots of stuff
tlater-famedly Jun 30, 2026
ec0e139
feat(yui): Add obsidian
TLATER Mar 24, 2026
d9e06c1
feat(yui): Add sunshine streaming
TLATER Mar 2, 2026
d64a419
fix(steam): Add `pkgs.hidapi` to fix the new steam controller
TLATER Jun 30, 2026
819ebfc
WIP: fix(treewide): Adopt yui
TLATER Jul 9, 2026
b726e96
fix(update): Don't commit new files
TLATER Jul 10, 2026
875a416
update(pkgs): Update sources of all downstream packages
TLATER Jul 10, 2026
49bfe45
flake.lock: Update
TLATER Jul 10, 2026
8064fde
chore(flake.nix): Add new follows for famedly-nixos
TLATER Jul 10, 2026
05b26df
feat(nix): Add ncro for better cache resolution
TLATER Jul 10, 2026
6ace092
fix(nix): Only permit the wheel group to use the nix daemon
TLATER Jul 10, 2026
6f33682
chore(nvidia): Restore nvidia package source logic
TLATER Jul 10, 2026
f338a84
fix(bluetooth): Revert to bluez 5.84 to fix speaker connection
TLATER Jul 10, 2026
6afd185
chore: Fix boot depending on an internet connection
TLATER Jul 12, 2026
d23257e
feat(matrix): Switch to cinny
TLATER Jul 17, 2026
6a4ad2c
flake.lock: Update
TLATER Jul 20, 2026
ba0fa8a
WIP: feat(dns): Use tailscale
TLATER Jul 20, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 0 additions & 11 deletions .github/workflows/check.yml

This file was deleted.

33 changes: 0 additions & 33 deletions .github/workflows/update.yml

This file was deleted.

18 changes: 0 additions & 18 deletions .sops.yaml

This file was deleted.

85 changes: 5 additions & 80 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,84 +2,9 @@

My NixOS-managed dotfiles repository.

## Installation
## Required systemd credentials

### NixOS configurations

#### Reinstalling an existing configuration

These can be installed using
[nixos-anywhere](https://github.com/numtide/nixos-anywhere/), however
the installation steps are subtly different from the upstream ones:

> **Warning**
> yui has not yet been set up for this process

1. Get the gpg secret directory from a backup. If no backup is
available, set up a new gpg directory as in the new machine
instructions.
2. Boot the NixOS install disk on the machine in question, set up
networking and a user password.
3. ssh into the machine, copy the ssh public key into
`/root/.ssh/authorized_keys`
4. Place the desired disk encryption password in a file
(`secret.key`), ensuring it does *not* end in a newline (`echo -e`).
5. Run `nix run --inputs-from . nixos-anywhere -- -f .#<hostname> root@<ip> --no-reboot --disk-encryption-keys /tmp/secret.key secret.key`
- If some permission error around `secret.key` pops up, rerun the
command without the `--disk-encryption-keys`. They will already
have been copied over, some kind of upstream bug.
6. Before rebooting:
1. Copy the gpg dir acquired in step 1 to `/mnt/var/lib/sops`
2. Place a copy of `/etc/sops/secrets.yaml` in `/mnt/etc/sops/secrets.yaml`.
3. Set a password for tlater with `nixos-enter` and `passwd`

#### Setting up a new machine

Before the configuration can be installed, we need to set up a few
basic things.

It's easiest to do this when the system in question is already
running, and we're ssh'd into it, so we can read out some device
data. So boot into the NixOS installer first (will be useful later
anyway).

Create a new subdirectory of `nixos-config` named after the new host,
and create a new `nixosConfigurations` entry for it.

Then set up:

1. Basic networking. Typically a bond config, see yui for examples.
2. Make sure to include one of the network modules so that wireless
networking is set up on first boot.
3. Generate and include a new `hardware-configuration.nix`:
```console
nixos-generate-config --no-filesystems --show-hardware-config
```
4. Set up a new sops target.
1. Firstly, create a new gpg dir according to [these
instructions](https://github.com/Mic92/sops-nix#use-with-gpg-instead-of-ssh-keys).
2. Then, add the generated fingerprint to `.sops.yaml`, and
re-encrypt `/etc/sops/secrets.yaml`.

##### GPG/sops setup

### Non-NixOS

For non-NixOS hosts, this requires nix >=2.4 with flakes enabled. To
install this on an arbitrary Linux distro, follow the [upstream nix
installation instructions](https://nixos.org/download.html) and then
run:

```bash
nix-env -iA nixpkgs.nixFlakes
mkdir -p ~/.config/nix
echo 'experimental-features = nix-command flakes' > ~/.config/nix/nix.conf
```

After that, enter a devshell for this flake and install it with
home-manager:

```bash
nix develop github:tlater/dotfiles
home-manager switch --flake github:tlater/dotfiles#gnome-vm
```
| ID | Purpose |
| -------------- | ------------------------------------------------------------------- |
| wifi-passwords | Passwords for wifi networks all computers should be able to access. |
| | |
47 changes: 0 additions & 47 deletions checks/default.nix

This file was deleted.

38 changes: 0 additions & 38 deletions checks/lib.nix

This file was deleted.

67 changes: 67 additions & 0 deletions dev/devshells.nix
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
/**
Dev utilities.
*/
{ inputs, ... }: {
imports = [ inputs.devshell.flakeModule ];

perSystem =
{
config,
pkgs,
self',
...
}:
{
devshells = {
/**
Default devshell containing all utilities for using this
repository.
*/
default = {
name = "tlater’s dotfiles";

packages = [
config.treefmt.build.wrapper
pkgs.nh
];

commands = [
{
name = "update-packages";
category = "[[maintenance commands]]";
help = "update this flakes' packages";
package = self'.builders.writeNuBinWith { packages = [ pkgs.git ]; } "update-packages" ./update.nu;
}

{
name = "prek";
category = "[[check commands]]";
help = "Run and manage pre-commit hooks";
package = config.prek.package.wrapper;
}
];

env = [
{
name = "NH_NO_CHECKS";
value = true;
}

{
name = "NH_FLAKE";
value = "/home/tlater/.local/src/dotfiles";
}
];
};

/**
Rust devshell with the Rust toolchain required to develop on
Rust projects in the repository.
*/
rust = { extraModulesPath, ... }: {
imports = [ "${extraModulesPath}/language/rust.nix" ];
name = "tlater's dotfiles - rust edition";
};
};
};
}
24 changes: 24 additions & 0 deletions dev/formatting.nix
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
{ inputs, ... }: {
imports = [ inputs.treefmt.flakeModule ];

perSystem.treefmt = {
# `prek` is in charge of running these kinds of checks, we don't
# want to run formatters with `nix flake check`.
flakeCheck = false;

settings = {
allowMissingFormatter = false;
walk = "git";

formatter.nixfmt.options = [ "--strict" ];
};

programs = {
nixfmt.enable = true;
prettier.enable = true;
shfmt.enable = true;
};

# settings.formatter.prettier.excludes = [ "*.md" ];
};
}
Loading