Flake Inputs: • Updated input 'custom-sidebar-src': 'github:elchininet/custom-sidebar' (2025-03-17) rev: 4aa3a4d64763552602e1128529b708b2f5c9109c → 'github:elchininet/custom-sidebar' (2025-03-18) rev: cb859ddcc3177d8aac73b926ccdff0406f4b11af • Updated input 'home-manager': 'github:nix-community/home-manager' (2025-03-14) rev: 4e12151c9e014e2449e0beca2c0e9534b96a26b4 → 'github:nix-community/home-manager' (2025-03-18) rev: fb74bb76d94a6c55632376c931fc108131260ee9 • Updated input 'hyprland': 'github:hyprwm/Hyprland' (2025-03-17) rev: 011d7ccb91081ff99f184564ea38d1b9e543a99c → 'github:hyprwm/Hyprland' (2025-03-18) rev: cca0f48b74e87f86244f5773c42d9ade84683f3b • Updated input 'jovian': 'github:Jovian-Experiments/Jovian-NixOS' (2025-03-15) rev: ecaf8b6aa7d28cb7b87da334310fbe1ba31f8d64 → 'github:Jovian-Experiments/Jovian-NixOS' (2025-03-18) rev: fd69a59cfab06fe8ac0695377e10573e91b6a3ff • Updated input 'nix-gaming': 'github:fufexan/nix-gaming' (2025-03-17) rev: 7a5e1f3c5ed63bcf047103d1edd9276e77b4f684 → 'github:fufexan/nix-gaming' (2025-03-18) rev: 53eda8bba79a2c28782734bca51d70ecffb82d74 • Updated input 'nixcord': 'github:kaylorben/nixcord' (2025-03-15) rev: c1a2a14393dba951994442199b9adfe14bb78a99 → 'github:kaylorben/nixcord' (2025-03-17) rev: d7f44d000158fa46af9fae1819d8221d1ccb4ca2 • Updated input 'poetry2nix': 'github:nix-community/poetry2nix' (2025-03-12) rev: f842aae3a72ef764e38eaf3e75aa435fb9861bba → 'github:nix-community/poetry2nix' (2025-03-17) rev: 25b1472cf0982124a1a6674379554047f1df163b • Updated input 'sops-nix': 'github:Mic92/sops-nix' (2025-03-17) rev: b33837ae3cfa012b65810891bebbee71fa4c0658 → 'github:Mic92/sops-nix' (2025-03-17) rev: 787afce414bcce803b605c510b60bf43c11f4b55 • Updated input 'spotifyplus-src': 'github:thlucas1/homeassistantcomponent_spotifyplus' (2025-03-14) rev: 05a60bbefa09ac173ce8dab0dd5d71d23b379ac9 → 'github:thlucas1/homeassistantcomponent_spotifyplus' (2025-03-17) rev: c69ed37af0832200a960b16ef6f04146133254f1 Docker Images: • postgres 14: sha256:c0e14efd7eaf4d83e443b6e7047ddde6465edbbbcc28ae770d9f5398abba1969 → sha256:4e8c2e92ad1fa2c3ea5efca42540e626a362d467e50bec75f9afecf2666f2f5b • nextcloud fpm: sha256:6854c0336040c628b84bd286fa898675d00d77139b0299c6e39793da454e2115 → sha256:f277ddde7210f04a47daca3c3a0a6f42ff801c1e31b1f883b0a60feb842ee1d0 • nginx latest: sha256:9d6b58feebd2dbd3c56ab5853333d627cc6e281011cfd6050fa4bcf2072c9496 → sha256:57a563126c0fd426346b02e5aa231ae9e5fd66f2248b36553207a0eca1403fde • ghcr.io/linuxserver/radarr latest: sha256:06f209efdfb25df8eaa6c275f6106d0a9e6b2c8502bd6dde3f95683c2a66aac1 → sha256:23677e1cb09bd957796f4521748f0eff9eb65d883949c10442635eabe64b750a • ghcr.io/linuxserver/sonarr latest: sha256:b666479159c0ffc17d5c2281737c9a88d78afcaa0aa52cb441b46336f6feba31 → sha256:7fe49f99201de94a277c577dcce5ef8f1789ead1056c8cf758fac7bf4e601d16 Firefox Addons: ublock-origin: 1.62.0 -> 1.63.0 Node modules: eslint-plugin-jsdoc: 50.6.7 -> 50.6.8 Misc Sources: Vuetorrent: 2.23.0 -> 2.23.1 |
||
---|---|---|
.forgejo/workflows | ||
apps | ||
configurations | ||
devShells | ||
homeManagerModules | ||
inputs | ||
lib | ||
modules | ||
nixFastChecks | ||
overlays | ||
packages | ||
results | ||
scopedPackages | ||
.gitattributes | ||
.gitignore | ||
_outputs.nix | ||
flake.lock | ||
flake.nix | ||
justfile | ||
LICENSE.md | ||
README.md |
My NixOS configs
AGS
You might find it weird that most of my config is written in TypeScript. That's because all my desktops run AGS for UI. Click on this to see my configuration.
I'm also a victim of Stockholm syndrome at this point and make my scripts in TypeScript because it's the scripting language I am most comfortable with.
About
General
This repo is the complete configuration of machines I own running NixOS or Nix and any other related smaller projects exposed by a Nix Flake.
Its main directory structure is based on a flake's outputs.
I try to follow a few rules to better organise my Nix code:
- Every main subdirectory only has an optional
default.nix
and subfolders for each of its attributes. - Inside a subdirectory, if there is non nix code, it will be in a
config
folder. - Every module should not do anything if imported. An enable option should be toggled for it to have any effect.
- Any nix file that represents a module should be named
default.nix
(a nix file which is imported directly can be called anything else alongsidedefault.nix
)
Flake Location
This git repo will always be located at $FLAKE
(config.environment.variables.FLAKE
)
and symlinked to /etc/nixos
to have everything where NixOS tools
expect things to be.
ie.
sudo rm -r /etc/nixos
echo "$FLAKE" # /home/matt/.nix
sudo ln -sf /home/matt/.nix /etc/nixos
Subdirectories
Output / Directory | Description |
---|---|
apps |
Misc scripts ran from the flake |
configurations |
device, ISO and nix-on-droid configurations |
devShells |
Development shells for a bunch of projects and languages |
homeManagerModules |
Modules made for home-manager |
inputs |
Pre-evaluated flake inputs |
lib |
Custom Nix functions made easily available |
modules |
Modules made for NixOS systems |
nixFastChecks |
Attribute set of derivations exposed by this flake |
overlays |
Nixpkgs overlays |
packages |
Some custom packages not available in nixpkgs or modified from it |
results |
Directory where I neatly keep my result symlinks from nixFastChecks |
scopedPackages |
Some custom package scopes not available in nixpkgs or modified from it |
Secrets
All my secrets are in a private git repo that makes use of
sops-nix.
I generate .sops.yaml
from .sops.nix
:
let
wim = "somekey";
binto = "somekey2";
in {
creation_rules = [
{
path_regex = "secrets/[^/]+\\.(yaml|json|env|ini)$";
key_groups = [
{
age = [wim binto];
}
];
}
];
}
which is then converted to .sops.yaml
using
remarshal
and this shell command:
nix eval --json --file ./.sops.nix | remarshal --if json --of yaml > .sops.yaml
TLDR: I hate YAML