NixOS is the endgame to Distro Hopping
Find a file
matt1432 5beeb99aca
All checks were successful
Discord / discord commits (push) Has been skipped
chore: update sources
Flake Inputs:
    • Updated input 'gpu-screen-recorder-src':
        'git+https://repo.dec05eba.com/gpu-screen-recorder' (2025-02-24) rev: d9f61602d002d6eeb94d2f299ad83260bd21db7d
      → 'git+https://repo.dec05eba.com/gpu-screen-recorder' (2025-02-27) rev: 9bfeb95e3969f978686d57d7301174f29394088f

    • Updated input 'home-manager':
        'github:nix-community/home-manager' (2025-02-26) rev: 53c587d263f94aaf6a281745923c76bbec62bcf3
      → 'github:nix-community/home-manager' (2025-02-27) rev: 343646e092696d94b6f22b6875ae685756fd4cf0

    • Updated input 'hyprland':
        'github:hyprwm/Hyprland' (2025-02-25) rev: f0850905f0275922340035f62b6d808c2980ceda
      → 'github:hyprwm/Hyprland' (2025-02-26) rev: d5920bc5da75b8eaf3476bc814bd46d225709788

    • Updated input 'jovian':
        'github:Jovian-Experiments/Jovian-NixOS' (2025-02-26) rev: 14a125ea5c440c57310dc1bb3acf7641078d783a
      → 'github:Jovian-Experiments/Jovian-NixOS' (2025-02-27) rev: 227d9adc3331820a349b3344a5fcc710a5f196c1

    • Updated input 'nixcord':
        'github:kaylorben/nixcord' (2025-02-26) rev: 599d420c9921228e21dba1257cfe0cce6bdb684d
      → 'github:kaylorben/nixcord' (2025-02-27) rev: 6c5583b38f5c3ccc40b90be0129407a4d04ab683

    • Updated input 'nixpkgs':
        'github:NixOS/nixpkgs' (2025-02-24) rev: 0196c0175e9191c474c26ab5548db27ef5d34b05
      → 'github:NixOS/nixpkgs' (2025-02-26) rev: 5135c59491985879812717f4c9fea69604e7f26f

    • Updated input 'nixpkgs-wayland':
        'github:nix-community/nixpkgs-wayland' (2025-02-26) rev: ddf8917ab3e6288b361cd8099c69c6e58ba3cc39
      → 'github:nix-community/nixpkgs-wayland' (2025-02-27) rev: 3b15bb3ab4868d20958a71232290d0ab2f9849aa

    • Updated input 'spotifyplus-src':
        'github:thlucas1/homeassistantcomponent_spotifyplus' (2025-02-22) rev: eee864fe7ff76fa61feb01663ac7fb1af78801ee
      → 'github:thlucas1/homeassistantcomponent_spotifyplus' (2025-02-26) rev: 6b67846e275ee184e31add3499a3d3207e33514f

Docker Images:
    • onlyoffice/documentserver latest:
       sha256:7bf6a672e1743d62002aa518ea880f486f642c238ee93aa6d572f899a05da486
     → sha256:7cf23e8d1376d8c56b0d98696762bdecbe3c8b0d3c182592ed66e2e65b4f8f51
2025-02-27 14:03:11 -05:00
.forgejo/workflows feat(servers): test github action 2024-01-11 17:22:35 -05:00
apps chore: update sources 2025-02-27 14:03:11 -05:00
configurations chore: update sources 2025-02-27 14:03:11 -05:00
devShells docs: add generated overlays readme 2025-01-21 17:05:47 -05:00
homeManagerModules fix(nvim): set correct path for headless markdown preview 2025-02-18 02:27:01 -05:00
inputs chore: update sources 2025-02-27 14:03:11 -05:00
lib chore: update sources 2025-02-27 14:03:11 -05:00
modules fix(ags): adjust set_x_pos to latest Gdk changes 2025-02-27 13:52:21 -05:00
nixFastChecks feat: disable cache-apt because it causes lag 2025-01-11 17:08:38 -05:00
overlays fix(droidcam): set correct make flags 2025-02-18 19:39:30 -05:00
packages chore: update sources 2025-02-26 15:56:47 -05:00
results fix(cache): keep gc roots of nix-fast-build alive 2024-12-11 08:30:13 -05:00
scopedPackages chore: update sources 2025-02-25 21:23:33 -05:00
.gitattributes feat(git): remove generated files from git diff 2024-11-15 14:03:43 -05:00
.gitignore fix(cache): keep gc roots of nix-fast-build alive 2024-12-11 08:30:13 -05:00
_outputs.nix refactor: move all inputs to 2025-01-27 18:16:37 -05:00
flake.lock chore: update sources 2025-02-27 14:03:11 -05:00
flake.nix chore: update sources 2025-02-27 14:03:11 -05:00
justfile feat(mc-mods): add to justfile 2025-02-25 01:24:19 -05: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