No description
Find a file
2024-04-02 12:43:32 +02:00
.github .github: fix push job 2024-02-12 07:54:52 +01:00
assets treewide: alejandra -> nixfmt-rfc-style 2024-03-08 11:39:36 +01:00
hosts hosts/hijiri-vm/disks: migrate to new partition scheme 2024-04-02 12:43:32 +02:00
modules treewide: reformat 2024-03-08 11:39:36 +01:00
pkgs treewide: alejandra -> nixfmt-rfc-style 2024-03-08 11:39:36 +01:00
secrets hosts/kazuki/ntfy: set up users declaratively 2024-03-08 11:39:36 +01:00
wrappers treewide: reformat 2024-03-08 11:39:36 +01:00
.envrc Initial commit 2023-08-03 16:16:29 +02:00
.gitignore Initial commit 2023-08-03 16:16:29 +02:00
effects.nix treewide: reformat 2024-03-08 11:39:36 +01:00
flake.lock flake.lock: update 2024-04-02 12:43:32 +02:00
flake.nix flake.nix: fix attic 2024-04-02 12:43:32 +02:00
README.md hosts/kazuki/disks: migrate to new partition scheme 2024-04-02 12:43:32 +02:00

雪定(せってい)

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

Project structure

  • hosts - per-machine configurations
    • kazuki - my linux arm server
    • legion - my linux x86 server
    • hijiri - my macbook1
    • hijiri-vm - linux vm running on my macbook
    • miyagi - my work machine1
    • ude - another linux arm server
    • kogata - my m1 mac mini doubling as a server
  • modules - options which in principle should be reusable by others
    • */common - common options between my machines which aren't meant to be reusable by others
    • system
      • settei - my opinionated nixos/nix-darwin options
    • flake - flake-parts modules
  • secrets - agenix secrets
  • wrappers - nix packages wrapped with my configs (see: wrapper-manager)
  • assets - miscellaneous values reused throughout my config
  • effects.nix - hercules-ci configuration

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)
  • anything that goes into modules should be usable by others, except for modules/common.
  • 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

  • migrate the rest of my machines
  • hercules-ci effects for deploying machines on update (if configuration is valid)
  • go back to hercules or just migrate off of gha in some way
  • fix disko

  1. Machine not migrated yet or in the process of migrating. See: https://nest.pijul.com/nrabulinski/nix-config ↩︎