No description
  • Nix 83.4%
  • Rust 7.3%
  • CMake 3.8%
  • C 2.6%
  • Shell 2.5%
  • Other 0.4%
Find a file
Nikodem Rabuliński f8ca64f075
All checks were successful
/ check (pull_request_target) Successful in 35s
/ build (x86_64-linux) (pull_request_target) Successful in 26s
/ build (aarch64-darwin) (pull_request_target) Successful in 48s
/ build (aarch64-linux) (pull_request_target) Successful in 1m15s
/ check (push) Successful in 1m31s
/ build (x86_64-linux) (push) Successful in 24s
/ build (aarch64-linux) (push) Successful in 1m14s
/ build (aarch64-darwin) (push) Successful in 35s
modules/system/gitea-actions-runner: prefer hostPath over systemPath
2026-05-14 00:05:47 +02:00
.forgejo ci: fix push to cache 2026-04-30 00:22:01 +02:00
assets hosts/kanade: init 2026-04-11 01:07:32 +02:00
hosts flake.lock: update 2026-04-29 20:16:12 +02:00
modules modules/system/gitea-actions-runner: prefer hostPath over systemPath 2026-05-14 00:05:47 +02:00
pkgs pkgs/ddns: fix cf key 2026-05-11 19:32:55 +02:00
secrets services: attic -> celler 2026-04-30 00:09:50 +02:00
services services/forgejo: increase timeout times 2026-04-30 00:09:50 +02:00
wrappers wrappers/rash: give up on the dream 2026-02-22 00:05:26 +01:00
.envrc nilla: migrate devshells 2025-05-01 22:59:58 +02:00
.gitignore nilla: add ci.check 2025-05-01 23:01:24 +02:00
default.nix ci: actually build stuff in CI 2025-10-28 12:56:53 +01:00
flake.lock services: attic -> celler 2026-04-30 00:09:50 +02:00
flake.nix services: attic -> celler 2026-04-30 00:09:50 +02:00
garnix.yaml treewide: reformat 2025-02-04 12:13:21 +01:00
inputs.nix inputs: lazy-trees at home 2025-05-01 23:01:24 +02:00
nilla.nix to-revert: kanidm and deno are not building on darwin 2026-04-30 00:09:50 +02:00
README.md README: update machine list 2026-04-29 20:39:12 +02:00
shell.nix nilla: init 2025-05-01 22:17:20 +02:00
treefmt.nix to-revert: kanidm and deno are not building on darwin 2026-04-30 00:09:50 +02:00

雪定(せってい)

Collection of my personal Nix configurations and opinionated NixOS, nix-darwin, home-manager, and nilla modules.

Caution

I tried to make the modules in this repository useful to others without having to modify them, meaning I tried to have many configuration options, have them be disabled by default, etc. That is no more and although I still encourage people to use my config for learning and inspiration, the modules will now assume they're running in my infrastructure and I'll only add configuration and/or enabling options when it makes sense to me, personally.

Project structure

  • hosts - per-machine configurations
    • kazuki - my linux arm server
    • hijiri - my macbook
    • hijiri-vm - linux vm running on my macbook
    • ude - another linux arm server
    • kogata - my m1 mac mini
    • youko - my linux x86 server
    • kanade - my m4 mac mini doubling as a server
  • modules - options which in principle should be reusable by others
    • system - my opinionated nixos/nix-darwin modules
    • home - my opinionated home-manager modules
    • nilla - nilla modules
  • services - configs for services I self-host
  • secrets - agenix secrets
  • wrappers - nix packages wrapped with my configs (see: wrapper-manager)
  • assets - miscellaneous values reused throughout my config

Code guidelines

Not set rules but general guidelines for myself to hopefully keep this config clean, maintainable, and reusable.

  • only importing downwards. this means no imports = [ ../../foo/bar/some-module.nix ];
  • ideally only one level of imports. this means i'll try to only do imports = [ ./foo ]; or imports = [ ./bar.nix ] but not imports = [ ./x/y/z.nix ];
  • the file should be roughly in order of most interesting to least interesting options.
  • imports should be the first attribute (except for _file)
  • there should be no implicit state anywhere in the config. (sounds obvious but this is already broken with legion and the zfs pool but i'll let that one slide) to achieve this i still need to create a proper live iso with my config and my bootstrapping ssh key

TODOs

Sorted rougly by priority

  • get rid of flakes completely
  • bring back ci (sorta done)
  • automatic deploys (either push or pull, to be decided)
  • make the configuration truly declarative (to a reasonable degree)
  • themeing solution