NixOS is the endgame to Distro Hopping
  • Nix 53%
  • TypeScript 36.8%
  • C# 3%
  • Lua 2%
  • SCSS 1.9%
  • Other 3.2%
Find a file
matt1432 c1bb2a897e
All checks were successful
Discord / discord commits (push) Has been skipped
chore: update sources
Flake Inputs:
    • Updated input 'astal':
        'github:Aylur/astal/11842ae' (2026-06-21)
      → 'github:Aylur/astal/04454c2' (2026-07-03)

    • Updated input 'custom-sidebar-src':
        'github:elchininet/custom-sidebar/d0a6022' (2026-07-02)
      → 'github:elchininet/custom-sidebar/37509c0' (2026-07-06)

    • Updated input 'determinate-nix':
        'github:DeterminateSystems/nix-src/15287ff' (2026-07-03)
      → 'github:DeterminateSystems/nix-src/70974c2' (2026-07-09)

    • Updated input 'gpu-screen-recorder-src':
        'git+https://repo.dec05eba.com/gpu-screen-recorder' (2026-07-03) rev: 9ac80b40621e637890f4ed6da782e08febb08e22
      → 'git+https://repo.dec05eba.com/gpu-screen-recorder' (2026-07-04) rev: a453e85f72acf116e1bd2021864c6a715f98362c

    • Updated input 'home-manager':
        'github:nix-community/home-manager/b2e4390' (2026-07-03)
      → 'github:nix-community/home-manager/144f4e3' (2026-07-09)

    • Updated input 'hyprexpo-src':
        'github:sandwichfarm/hyprexpo/49c4bf9' (2026-06-22)
      → 'github:sandwichfarm/hyprexpo/e76761b' (2026-07-01)

    • Updated input 'material-symbols-src':
        'github:beecho01/material-symbols/ab47ab1' (2026-07-02)
      → 'github:beecho01/material-symbols/ff753a7' (2026-07-08)

    • Updated input 'nix-eval-jobs':
        'github:DeterminateSystems/nix-eval-jobs/bd0e17c' (2026-06-20)
      → 'github:DeterminateSystems/nix-eval-jobs/1aa35aa' (2026-07-09)

    • Updated input 'nix-gaming':
        'github:fufexan/nix-gaming/a34118c' (2026-07-01)
      → 'github:fufexan/nix-gaming/ea13b9c' (2026-07-09)

    • Updated input 'nix-index-db':
        'github:Mic92/nix-index-database/f8ed6cd' (2026-07-02)
      → 'github:Mic92/nix-index-database/96d6de1' (2026-07-07)

    • Updated input 'nix-output-monitor':
        'github:maralorn/nix-output-monitor/2de719e' (2026-07-03)
      → 'github:maralorn/nix-output-monitor/e22c16d' (2026-07-04)

    • Updated input 'nixcord':
        'github:kaylorben/nixcord/5f42815' (2026-07-03)
      → 'github:kaylorben/nixcord/71e056c' (2026-07-09)

    • Updated input 'nixcord/nixpkgs-nixcord':
        'github:NixOS/nixpkgs/a037402' (2026-06-11)
      → 'github:NixOS/nixpkgs/80d591e' (2026-07-02)

    • Updated input 'nixos-jellyfin':
        'github:matt1432/nixos-jellyfin/5174cff' (2026-06-15)
      → 'github:matt1432/nixos-jellyfin/a21185b' (2026-07-07)

    • Updated input 'nixpkgs':
        'git+https://github.com/NixOS/nixpkgs&shallow=1' (2026-06-29) rev: b5aa0fbd538984f6e3d201be0005b4463d8b09f8
      → 'git+https://github.com/NixOS/nixpkgs&shallow=1' (2026-07-05) rev: d407951447dcd00442e97087bf374aad70c04cea

    • Updated input 'pcsd':
        'github:matt1432/nixos-pcsd/b8785b8' (2026-06-02)
      → 'github:matt1432/nixos-pcsd/8e16d83' (2026-07-05)

    • Updated input 'sops-nix':
        'github:Mic92/sops-nix/56b2406' (2026-06-22)
      → 'github:Mic92/sops-nix/f140661' (2026-07-04)

    • Updated input 'spotifyplus-src':
        'github:thlucas1/homeassistantcomponent_spotifyplus/ae9959b' (2026-06-22)
      → 'github:thlucas1/homeassistantcomponent_spotifyplus/6a6f434' (2026-07-04)

    • Updated input 'ts-for-gir-src':
        'github:gjsify/ts-for-gir/f48f594' (2026-07-02)
      → 'github:gjsify/ts-for-gir/3a2fb7b' (2026-07-04)

    • Updated input 'tuya-local-src':
        'github:make-all/tuya-local/e91b751' (2026-07-03)
      → 'github:make-all/tuya-local/591d8c4' (2026-07-09)

    • Updated input 'vimplugin-roslyn-src':
        'github:seblj/roslyn.nvim/c4ef259' (2026-06-16)
      → 'github:seblj/roslyn.nvim/05ffc13' (2026-07-08)

Docker Images:
    • getmeili/meilisearch latest:
       sha256:c1a52f17c759c2cd6349eede3d5108b8dac07b97e10665b1d64a2d4961c2fd29
     → sha256:bdc7d7e7939911c40d88d6bcd01f9c72c81f7293135916d48bce241569f721bd

    • codeberg.org/forgejo/forgejo 15:
       sha256:55bb42bec9abef5223744804f164e37d37b20df7e8b8b4807ba213ad4f071d6d
     → sha256:9e14382433760127c87cb78c4dbc44b45abbb0c09c8479812c8e99b3dc893429

    • postgres 14:
       sha256:3e7dd0bfd7bfb4fc1278d1a354da44375dfe924bed8eaf83ae14967d84dede5b
     → sha256:9e279cc7fc6e908da071befe389c576bd6752dbd295a9c078f96a75bab03e54c

    • data.forgejo.org/forgejo/runner 12:
       sha256:268ad0d1d24bd7ecf2386b7c44e8211398dc014ca81d4fd5fbad96fe79af18f5
     → sha256:d85b420efea6f0137fe03f285b05df73e0c34cfbfc2c6a96d22cc52f38106d8c

    • ghcr.io/immich-app/immich-machine-learning release:
       sha256:cb2128c5cbc554fdaa2a036fb4419c808a9f3e0f27170e569dd9e727243da909
     → sha256:412f68e46e1966d0f87a8733a430369ee184b3a83e7b1e2db536dff291a34aa7

    • ghcr.io/immich-app/immich-server release:
       sha256:46dedfc5848f7313bd6b584ea9f2648057430307aad6de56de968f6710a72cae
     → sha256:14390f3dc9512dc3273b12ccee6363d9be16c388699abc3f3fe0498bb9829937

    • nextcloud fpm:
       sha256:4eb70728fafd09d1c192c940adb50495bd7ba47bbb807cc8970e4851b551dfd8
     → sha256:4afbc1e6a1dfb6e7235fc5f5352a8a1a17c2a0670a6f0ec4ba20386dcfcfe2d2

    • chromedp/headless-shell latest:
       sha256:313ed7255ae1e155fb157631a6d4c0eb8b65bbe06de9e704ed834399bdf678ff
     → sha256:8ac7b1c4bbf3d1a7e728c2d1c17eb57cbfa006189052422aa1f013ffd0780d57

    • postgres latest:
       sha256:4aabea78cf39b90e834caf3af7d602a18565f6fe2508705c8d01aa63245c2e20
     → sha256:22c89fe0d0f507606260237fd55e51f6137f58b2d5bcf6152242b96d9fe8f9a4

    • ghcr.io/amruthpillai/reactive-resume latest:
       sha256:635ffcb7cfb09375622b56ee7ba0e4aed6246cef37e59efef36dbacb9cfbfc8e
     → sha256:bfacee69faad04a8b785854d02cb078fb223824e8b07a07ff21fa39ebfa9fe8c

    • ghcr.io/linuxserver/bazarr latest:
       sha256:047222423d6d8556a88581b189175bec57f286f120b52ba29c0390fe6babaa5a
     → sha256:5d916d07404296ec35ee726e13e0e558f05952724cf494a7f009d913fb2b12f3

    • ghcr.io/cleanuparr/cleanuparr latest:
       sha256:a17be5104c2749cc8120e07dd63cb07fe8271f36fdb8f4a27ec46ddcf8581422
     → sha256:efd08729a33223a6a5bae267afcbeffe4bd2876b3f03144a025968adb8e3cc7e

    • ghcr.io/linuxserver/prowlarr latest:
       sha256:3e9bd62ca90c97c5df75b7012e10a29f6926e62807deeddc1dc89e6e2fd141e1
     → sha256:536036aeb2c740d1a660ccf143b58a8bd6222f09010258fdfc10a538af7bec78

    • ghcr.io/linuxserver/qbittorrent latest:
       sha256:163f3384db6cba9f68eaa83ca5f4209298b6029ba2d07b5e67562d0715baf5b9
     → sha256:2e074403c7b72e6d89cee3d0d41a47f7b5708c6a9e5316f3958c90765cbe12ce

    • ghcr.io/linuxserver/radarr latest:
       sha256:39da107b5a9371fdaa651bd188049b863716a815385eb3a30d41071b7e1aeb33
     → sha256:28852d0eacababc206762af48fe86d78594a4f434cc46b358f9764a857098662

    • ghcr.io/linuxserver/sonarr latest:
       sha256:fbb15bb4fb14d1ffe017f6be0e3fed8f1b300e4687e329767da0b61f36ba1eed
     → sha256:4b025354d338999e03bf6dbdadcdde94815d39d4a5aba5de3cdc86a56d7d6c51

Firefox Addons:
    floccus: 5.9.1 -> 5.10.1
    stylus: 2.4.2 -> 2.4.5
    ublock-origin: 1.72.0 -> 1.72.2

Node modules:
    @types/node: 26.1.0 -> 26.1.1
    prettier: 3.9.4 -> 3.9.5
    prettier-plugin-brace-style: 0.10.2 -> 0.10.3
    eslint-plugin-jsdoc: 63.0.10 -> 63.0.12
    eslint-plugin-perfectionist: 5.9.1 -> 5.10.0
    typescript-eslint: 8.62.1 -> 8.63.0

nix-update executions:
    jmusicbot: 0.6.5 -> 0.6.6
2026-07-09 15:12:02 -04:00
.forgejo/workflows chore(servers): fix discommit action 2026-06-12 13:43:07 -04:00
apps chore: update sources 2026-07-09 15:12:02 -04:00
configurations chore: update sources 2026-07-09 15:12:02 -04:00
devShells feat(nvim): don't dynamically load web config, put behind option 2026-01-17 13:17:10 -05:00
homeManagerModules chore: update nixd and remove temp fix 2026-04-29 12:54:39 -04:00
inputs chore(hypr): pin hyprgrass to working version 2026-07-09 14:53:56 -04:00
lib chore: update sources 2026-07-09 15:12:02 -04:00
modules chore: update sources 2026-07-09 15:12:02 -04:00
nixFastChecks feat: include darwin in systems and fix some errors 2026-01-13 22:41:52 -05:00
overlays chore: remove nom workaround 2026-06-23 12:05:03 -04:00
packages chore: update sources 2026-07-09 15:12:02 -04:00
results fix(cache): keep gc roots of nix-fast-build alive 2024-12-11 08:30:13 -05:00
scopedPackages chore: update sources 2026-07-09 15:12:02 -04:00
.gitattributes docs: add explanation in .gitattributes 2025-12-18 11:07:08 -05:00
.gitignore fix(cache): keep gc roots of nix-fast-build alive 2024-12-11 08:30:13 -05:00
.shellcheckrc chore: disable SC2215 warnings for project 2026-05-30 16:59:04 -04:00
_outputs.nix chore: get rid of nixos-avf config 2026-07-03 14:00:22 -04:00
flake.lock chore: update sources 2026-07-09 15:12:02 -04:00
flake.nix chore(hypr): pin hyprgrass to working version 2026-07-09 14:53:56 -04:00
justfile fix: lix -> detsys nix 2026-05-26 18:33:53 -04:00
LICENSE.md chore: add license 2024-01-18 11:01:09 -05:00
README.md docs: clean up and remove TODOs 2025-02-18 02:41:02 -05:00

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 alongside default.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