commit | 700577ad889b165fa27a22ea610a87d9121e6dd8 | [log] [tgz] |
---|---|---|
author | Skyler Grey <sky@a.starrysky.fyi> | Wed Aug 14 18:21:34 2024 +0000 |
committer | Samuel Shuert <coded@clicks.codes> | Mon Aug 19 19:51:21 2024 +0000 |
tree | 6fd33f0b9a3f82d40cfaee96aabab3f8ebfef688 | |
parent | 4123759130ad663a3409048bbc93f3c47ae7af35 [diff] |
feat(silverbullet): init Silverbullet is a browser-based markdown editor. We want a shared notepad and have looked at various options (logseq, obsidian, Collabora Online) but none of them have quite scratched the itch. That's not to say they aren't great pieces of software - they are, and they have their place, but they weren't quite what we needed. We're hoping silverbullet can scratch that itch. As a Clicks module, silverbullet uses *unstable* rather than your default nixpkgs. This is because the version in nixpkgs was deemed too far behind upstream - upstream is moving very fast right now, and we are willing to trade off a potential bit of stability in exchange for newer features. This may change in the future. As per https://silverbullet.md/Authelia, we have exempted silverbullet from Tailscale auth on some pages. For our instance on `teal` this makes no difference - we don't have forwarding set up from the outside world yet. In the future, this will change, and then it might matter a little more. For anyone importing and using our modules on their own machines, we hope that conforming to the authentication guide is welcome. Change-Id: Ib22f45f0bcb0047e23233a06c7a26732fc3256f5 Reviewed-on: https://git.clicks.codes/c/Infra/NixFiles/+/816 Tested-by: Skyler Grey <minion@clicks.codes> Reviewed-by: Samuel Shuert <coded@clicks.codes>
This repository contains system configuration for Clicks's infrastructure.
Config is written using Snowfall lib. It keeps us organized and has some nice features like namespaces.
Devices are named after colors, areas are named as a letter, with the matching phonetic alphabet word. Areas are generally managed by one member of Clicks, who has full access to all of the servers in that area. If you require help for a specific area you can email admin@clicks.codes
and in the subject line include the area you want help for.
System | Description | Address |
---|---|---|
teal | Primary Host | teal.alpha.clicks.domains |
a1d2 | Build Server | d2.a1.clicks.domains |
Deploys are done with deploy-rs, you'll need to be able to ssh into a machine with its hostname (either by a nifty .ssh/config
rule or tailscale
).
Once you've done that, you'll be able to deploy with
$ deploy .#MACHINE_NAME
If you're importing our modules, even if you don't enable most of them, you'll find it easiest and best to import them all. This is because the nixpkgs module system checks if all given options are defined, even if they aren't enabled in your specific configuration.
The module system doesn't do this with traditional if
statements or lib.optionalAttrs
, only lib.mkIf
, so we've made sure to use lib.optionalAttrs
for anything that depends on things not in this list:
nixpkgs
We expect the majority of you will already have all of these imported. We use and test against stateVersion = "24.05"
, and while we expect these modules to generally work with earlier or later stateVersion
s, please be aware that this could cause unexpcted effects
We may also depend on:
lib.nixosSystem
(lib
, pkgs
, etc.) being passed into our moduleslib
being extended such that lib.clicks
is equal to the lib
exported from our flakeWe expect the lib
extension to be a minor change, and providing standard arguments to modules to already be the case.
This means that, provided you don't enable any options, importing the Clicks modules will be safe so long as your flake fulfils all of these factors: we won't break eval and we won't change any of your settings. If you'd like to see how we test that, please check out ./modules.spec.nix
We expect no additions to this list, except a potential future change of adding auxolotl modules to this list when we consider them stable and easily-importable. Additions to this list will always be considered breaking changes.
(n.b. If you're wondering why we didn't use lib.optionalAttrs
everywhere, it's because using it loses us some laziness, making it much easier to make infinite recursions. If we replaced every lib.mkIf
with lib.optionalAttrs
in our own config, for instance, it would no longer evaluate)