All checks were successful
Discord / discord commits (push) Has been skipped
Flake Inputs: • Updated input 'home-manager': 'github:nix-community/home-manager' (2025-02-17) rev: 6c93eea85daddd0dc8d4a3a687473461f3122961 → 'github:nix-community/home-manager' (2025-02-18) rev: 97ac0801d187b2911e8caa45316399de12f6f199 • Updated input 'hyprgrass': 'github:horriblename/hyprgrass' (2025-02-12) rev: 6c699ec80004f724bd020d206bbab1e64d5ae03e → 'github:horriblename/hyprgrass' (2025-02-18) rev: 3c290c81c89156d82dc2d2912840b3b67addbb90 • Updated input 'hyprland': 'github:hyprwm/Hyprland' (2025-02-17) rev: d01f9943e1d401b09fc53be3c161279ab4f2c5ba → 'github:hyprwm/Hyprland' (2025-02-18) rev: 0137a5f6cdd24d5a10f813572791f1e641221a5b • Updated input 'modernz-src': 'github:Samillion/ModernZ' (2025-02-15) rev: 130b881a5365afbc497a4c10d40c4336de0d7972 → 'github:Samillion/ModernZ' (2025-02-18) rev: f5d4ade5f1de8812922c372c770dd570202eedd7 • Updated input 'nix-gaming': 'github:fufexan/nix-gaming' (2025-02-16) rev: 1e8debf2c71520a210d8c992a24d267a32f1e7e0 → 'github:fufexan/nix-gaming' (2025-02-18) rev: 720a606a88dd7b23138c5bc58eb43618f2d091c7 • Updated input 'nixpkgs-wayland': 'github:nix-community/nixpkgs-wayland' (2025-02-17) rev: 3dfd8fdeda2b712ae7238f5c7bb3644432319fc3 → 'github:nix-community/nixpkgs-wayland' (2025-02-19) rev: 78cdcb42b66b62e2d5f3b12e11f3ec531b787130 • Updated input 'poetry2nix': 'github:nix-community/poetry2nix' (2025-02-05) rev: be1fe795035d3d36359ca9135b26dcc5321b31fb → 'github:nix-community/poetry2nix' (2025-02-18) rev: d90f9db68a4bda31c346be16dfd8d3263be4547e • Updated input 'spotifyplus-src': 'github:thlucas1/homeassistantcomponent_spotifyplus' (2025-02-07) rev: 5591039fe08feb61d051b8fb9d61984b08412c81 → 'github:thlucas1/homeassistantcomponent_spotifyplus' (2025-02-18) rev: 194f77eb0b3f4fee9efbb14db5a19a8ca4b07b9f • Updated input 'spotifywebapi-src': 'github:thlucas1/SpotifyWebApiPython' (2025-02-05) rev: a75ec04b7bdd50913141d71fa6f8b36dc7d07724 → 'github:thlucas1/SpotifyWebApiPython' (2025-02-18) rev: c796445ca5de259e7c78eb00c9a2ce3547a807c2 • Updated input 'ts-for-gir-src': 'github:gjsify/ts-for-gir' (2025-02-17) rev: cd7cbc37778cad413538222ddf02c00265358997 → 'github:gjsify/ts-for-gir' (2025-02-18) rev: 8cb4dddca81d0b8da621845caac3c6bc456480c9 • Updated input 'tuya-local-src': 'github:make-all/tuya-local' (2025-02-17) rev: d6b5ac063342ce8a6a650d7786fcb841f177c6c9 → 'github:make-all/tuya-local' (2025-02-18) rev: dbd45ff59bb51a29b94137748a987090e19afdce Docker Images: • ghcr.io/linuxserver/bazarr latest: sha256:88272d031e268a5d10035e2707fc095417dba9794a7a4a59b51f01e6f9b74f65 → sha256:f25f8d61c5d3d5b963e92cfb6d53930648e995fbd22ff62d3cd8b061282f59c7 Firefox Addons: darkreader: 4.9.100 -> 4.9.101 Node modules: @stylistic/eslint-plugin: 3.1.0 -> 4.0.0 |
||
---|---|---|
.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