Better octodns file structure
This commit is contained in:
parent
190dde841e
commit
35bc79265c
|
@ -72,6 +72,7 @@ in
|
|||
satellite.dns.records = lib.flatten [
|
||||
(ghPage "doffycup")
|
||||
(ghPage "erratic-gate")
|
||||
(ghPage "giftstogo")
|
||||
(migaduMail "" "kfkhyexd")
|
||||
(migaduMail "orbit" "24s7lnum")
|
||||
];
|
69
dns/implementation/default.nix
Normal file
69
dns/implementation/default.nix
Normal file
|
@ -0,0 +1,69 @@
|
|||
{
|
||||
pkgs,
|
||||
octodnsConfig,
|
||||
nixosConfigurations ? { },
|
||||
extraModules ? [ ],
|
||||
}:
|
||||
let
|
||||
# {{{ Prepare packages
|
||||
octodns = pkgs.octodns.overrideAttrs (_: {
|
||||
version = "unstable-2024-10-08";
|
||||
src = pkgs.fetchFromGitHub {
|
||||
owner = "octodns";
|
||||
repo = "octodns";
|
||||
rev = "a1456cb1fcf00916ca06b204755834210a3ea9cf";
|
||||
sha256 = "192hbxhb0ghcbzqy3h8q194n4iy7bqfj9ra9qqjff3x2z223czxb";
|
||||
};
|
||||
});
|
||||
|
||||
octodns-cloudflare = pkgs.python3Packages.callPackage (import ./octodns-cloudflare.nix) {
|
||||
inherit octodns;
|
||||
};
|
||||
|
||||
fullOctodns = octodns.withProviders (ps: [ octodns-cloudflare ]);
|
||||
in
|
||||
# }}}
|
||||
rec {
|
||||
# {{{ Build zone files
|
||||
octodns-zones =
|
||||
let
|
||||
nixosConfigModules = pkgs.lib.mapAttrsToList (_: current: {
|
||||
satellite.dns = current.config.satellite.dns;
|
||||
}) nixosConfigurations;
|
||||
|
||||
evaluated = pkgs.lib.evalModules {
|
||||
specialArgs = {
|
||||
inherit pkgs;
|
||||
};
|
||||
|
||||
modules = [ ./nixos-module.nix ] ++ nixosConfigModules ++ extraModules;
|
||||
};
|
||||
in
|
||||
import ./gen-zone-file.nix {
|
||||
inherit pkgs;
|
||||
inherit (evaluated) config;
|
||||
};
|
||||
# }}}
|
||||
# {{{ Make the CLI use the newly built zone files
|
||||
octodns-sync = pkgs.symlinkJoin {
|
||||
name = "octodns-sync";
|
||||
paths = [ fullOctodns ];
|
||||
buildInputs = [
|
||||
pkgs.makeWrapper
|
||||
pkgs.yq
|
||||
];
|
||||
|
||||
postBuild = ''
|
||||
cat ${octodnsConfig} | yq '.providers.zones.directory="${octodns-zones}"' > $out/config.yaml
|
||||
wrapProgram $out/bin/octodns-sync \
|
||||
--run 'export CLOUDFLARE_TOKEN=$( \
|
||||
sops \
|
||||
--decrypt \
|
||||
--extract "[\"cloudflare_dns_api_token\"]" \
|
||||
./hosts/nixos/common/secrets.yaml \
|
||||
)' \
|
||||
--add-flags "--config-file $out/config.yaml"
|
||||
'';
|
||||
};
|
||||
# }}}
|
||||
}
|
37
dns/implementation/gen-zone-file.nix
Normal file
37
dns/implementation/gen-zone-file.nix
Normal file
|
@ -0,0 +1,37 @@
|
|||
{
|
||||
config,
|
||||
pkgs,
|
||||
lib ? pkgs.lib,
|
||||
}:
|
||||
let
|
||||
format = pkgs.formats.yaml { };
|
||||
cfg = config.satellite.dns;
|
||||
grouped = builtins.groupBy (entry: entry.zone) cfg.records;
|
||||
cpInvocations = lib.mapAttrsToList (
|
||||
zone: group:
|
||||
let
|
||||
grouped = builtins.groupBy (entry: entry.at) group;
|
||||
contents = lib.mapAttrs (
|
||||
at: entries:
|
||||
lib.lists.forEach entries (
|
||||
entry:
|
||||
let
|
||||
content =
|
||||
if builtins.typeOf entry.value == "list" then
|
||||
{ values = entry.value; }
|
||||
else
|
||||
{ inherit (entry) value; };
|
||||
cloudflare = if entry.enableCloudflareProxy then { octodns.cloudflare.proxied = true; } else { };
|
||||
in
|
||||
{ inherit (entry) ttl type; } // content // cloudflare
|
||||
)
|
||||
) grouped;
|
||||
file = format.generate "${zone}.yaml" contents;
|
||||
in
|
||||
"cp ${file} $out/${zone}.yaml"
|
||||
) grouped;
|
||||
in
|
||||
pkgs.runCommand "octodns-zones" { } ''
|
||||
mkdir $out
|
||||
${lib.concatStringsSep "\n" cpInvocations}
|
||||
''
|
48
dns/pkgs.nix
48
dns/pkgs.nix
|
@ -1,48 +0,0 @@
|
|||
{ pkgs, self, ... }:
|
||||
rec {
|
||||
octodns-zones =
|
||||
let
|
||||
nixosConfigModules = pkgs.lib.mapAttrsToList (
|
||||
key: current:
|
||||
# The iso image doesn't do any dns stuff
|
||||
if key == "iso" then
|
||||
{ }
|
||||
else
|
||||
# Copy over all dns records
|
||||
{ satellite.dns = current.config.satellite.dns; }
|
||||
) self.nixosConfigurations;
|
||||
|
||||
evaluated = pkgs.lib.evalModules {
|
||||
specialArgs = {
|
||||
inherit pkgs;
|
||||
};
|
||||
modules = [
|
||||
../modules/nixos/dns.nix
|
||||
../modules/common/octodns.nix
|
||||
./common.nix
|
||||
] ++ nixosConfigModules;
|
||||
};
|
||||
in
|
||||
evaluated.config.satellite.dns.octodns;
|
||||
|
||||
octodns-sync = pkgs.symlinkJoin {
|
||||
name = "octodns-sync";
|
||||
paths = [ self.packages.${pkgs.system}.octodns ];
|
||||
buildInputs = [
|
||||
pkgs.makeWrapper
|
||||
pkgs.yq
|
||||
];
|
||||
|
||||
postBuild = ''
|
||||
cat ${./octodns.yaml} | yq '.providers.zones.directory="${octodns-zones}"' > $out/config.yaml
|
||||
wrapProgram $out/bin/octodns-sync \
|
||||
--run 'export CLOUDFLARE_TOKEN=$( \
|
||||
sops \
|
||||
--decrypt \
|
||||
--extract "[\"cloudflare_dns_api_token\"]" \
|
||||
./hosts/nixos/common/secrets.yaml \
|
||||
)' \
|
||||
--add-flags "--config-file $out/config.yaml"
|
||||
'';
|
||||
};
|
||||
}
|
69
flake.lock
69
flake.lock
|
@ -602,6 +602,22 @@
|
|||
}
|
||||
},
|
||||
"flake-compat_7": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1696426674,
|
||||
"narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=",
|
||||
"owner": "edolstra",
|
||||
"repo": "flake-compat",
|
||||
"rev": "0f9255e01c2351cc7d116c072cb317785dd33b33",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "edolstra",
|
||||
"repo": "flake-compat",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"flake-compat_8": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1673956053,
|
||||
|
@ -823,24 +839,6 @@
|
|||
"type": "github"
|
||||
}
|
||||
},
|
||||
"flake-utils_8": {
|
||||
"inputs": {
|
||||
"systems": "systems_7"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1685518550,
|
||||
"narHash": "sha256-o2d0KcvaXzTrPRIo0kOLV0/QXHhDQ5DTi+OxcjO8xqY=",
|
||||
"owner": "numtide",
|
||||
"repo": "flake-utils",
|
||||
"rev": "a1720a10a6cfe8234c0e93907ffe81be440f4cef",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "numtide",
|
||||
"repo": "flake-utils",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"fromYaml": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
|
@ -1276,11 +1274,11 @@
|
|||
"purifix": "purifix"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1713856075,
|
||||
"narHash": "sha256-3nmcWGRczFJAiObkG+XUK9OdY8EVjySOUbDSK6yVyVE=",
|
||||
"lastModified": 1728771451,
|
||||
"narHash": "sha256-WazYd0cPY7FqDanOfyMf9qiciSj2wEL8NJ1sV8LV4Rs=",
|
||||
"owner": "prescientmoon",
|
||||
"repo": "miros",
|
||||
"rev": "37081c34cb04b0751527c4ed740220c57cea3151",
|
||||
"rev": "2e49f31f22855d1428ab693cf7d0e25b839dce28",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
@ -2077,21 +2075,21 @@
|
|||
},
|
||||
"spicetify-nix": {
|
||||
"inputs": {
|
||||
"flake-utils": "flake-utils_8",
|
||||
"flake-compat": "flake-compat_7",
|
||||
"nixpkgs": [
|
||||
"nixpkgs"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1704167711,
|
||||
"narHash": "sha256-kFDq+kf/Di/P8bq5sUP8pVwRkrSVrABksBjMPmLic3s=",
|
||||
"owner": "the-argus",
|
||||
"lastModified": 1728706579,
|
||||
"narHash": "sha256-uMa7cC1F2m7DHGOT5yQ1ZoUFVWxsnZDBi9VXwOgnhqw=",
|
||||
"owner": "Gerg-L",
|
||||
"repo": "spicetify-nix",
|
||||
"rev": "1325416f951d6a82cfddb1289864ad782e2b87c4",
|
||||
"rev": "59aa525938e501bdacad3753034e864a426b66f5",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "the-argus",
|
||||
"owner": "Gerg-L",
|
||||
"repo": "spicetify-nix",
|
||||
"type": "github"
|
||||
}
|
||||
|
@ -2107,7 +2105,7 @@
|
|||
"base16-kitty": "base16-kitty",
|
||||
"base16-tmux": "base16-tmux",
|
||||
"base16-vim": "base16-vim",
|
||||
"flake-compat": "flake-compat_7",
|
||||
"flake-compat": "flake-compat_8",
|
||||
"gnome-shell": "gnome-shell",
|
||||
"home-manager": "home-manager_3",
|
||||
"nixpkgs": "nixpkgs_13"
|
||||
|
@ -2265,21 +2263,6 @@
|
|||
"type": "github"
|
||||
}
|
||||
},
|
||||
"systems_7": {
|
||||
"locked": {
|
||||
"lastModified": 1681028828,
|
||||
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
|
||||
"owner": "nix-systems",
|
||||
"repo": "default",
|
||||
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nix-systems",
|
||||
"repo": "default",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"template-haskell-reload": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
|
|
10
flake.nix
10
flake.nix
|
@ -56,7 +56,7 @@
|
|||
miros.inputs.nixpkgs.follows = "nixpkgs";
|
||||
|
||||
# Spotify client with theming support
|
||||
spicetify-nix.url = "github:the-argus/spicetify-nix";
|
||||
spicetify-nix.url = "github:Gerg-L/spicetify-nix";
|
||||
spicetify-nix.inputs.nixpkgs.follows = "nixpkgs";
|
||||
# }}}
|
||||
# {{{ Theming
|
||||
|
@ -103,10 +103,12 @@
|
|||
myPkgs = import ./pkgs { inherit pkgs upkgs; };
|
||||
in
|
||||
myPkgs
|
||||
// {
|
||||
octodns = myPkgs.octodns.withProviders (ps: [ myPkgs.octodns-cloudflare ]);
|
||||
// (import ./dns/implementation) {
|
||||
inherit pkgs;
|
||||
extraModules = [ ./dns/config/common.nix ];
|
||||
octodnsConfig = ./dns/config/octodns.yaml;
|
||||
nixosConfigurations = builtins.removeAttrs self.nixosConfigurations [ "iso" ];
|
||||
}
|
||||
// (import ./dns/pkgs.nix) { inherit pkgs self system; }
|
||||
);
|
||||
# }}}
|
||||
# {{{ Bootstrapping and other pinned devshells
|
||||
|
|
|
@ -1,11 +1,17 @@
|
|||
{ inputs, pkgs, config, lib, ... }:
|
||||
{
|
||||
inputs,
|
||||
pkgs,
|
||||
config,
|
||||
lib,
|
||||
...
|
||||
}:
|
||||
let
|
||||
spicePkgs = inputs.spicetify-nix.packages.${pkgs.system}.default;
|
||||
spicePkgs = inputs.spicetify-nix.legacyPackages.${pkgs.system};
|
||||
themeMap = lib.fix (self: {
|
||||
"Catppuccin Mocha" = spicePkgs.themes.Comfy;
|
||||
"Catppuccin Latte" = spicePkgs.themes.Comfy;
|
||||
"Catppuccin Frappe" = spicePkgs.themes.Comfy;
|
||||
"Catppuccin Macchiato" = spicePkgs.themes.Comfy;
|
||||
"Catppuccin Mocha" = spicePkgs.themes.comfy;
|
||||
"Catppuccin Latte" = spicePkgs.themes.comfy;
|
||||
"Catppuccin Frappe" = spicePkgs.themes.comfy;
|
||||
"Catppuccin Macchiato" = spicePkgs.themes.comfy;
|
||||
|
||||
default.light = self."Catppuccin Latte";
|
||||
default.dark = self."Catppuccin Macchiato";
|
||||
|
@ -32,34 +38,28 @@ in
|
|||
colorScheme = config.satellite.theming.get colorschemeMap;
|
||||
|
||||
enabledExtensions = with spicePkgs.extensions; [
|
||||
adblock
|
||||
betterGenres
|
||||
bookmark
|
||||
fullAlbumDate
|
||||
fullAppDisplayMod
|
||||
shuffle # Working shuffle
|
||||
groupSession
|
||||
keyboardShortcut
|
||||
skipStats # Track my skips
|
||||
listPlaylistsWithSong # Adds button to show playlists which contain a song
|
||||
playlistIntersection # Shows stuff that's in two different playlists
|
||||
fullAlbumDate
|
||||
bookmark
|
||||
trashbin
|
||||
groupSession
|
||||
wikify # Shows an artist's wikipedia entry
|
||||
songStats
|
||||
showQueueDuration
|
||||
# REASON: broken
|
||||
# https://github.com/the-argus/spicetify-nix/issues/50
|
||||
# genre
|
||||
adblock
|
||||
savePlaylists # Adds a button to duplicate playlists
|
||||
showQueueDuration
|
||||
shuffle # Working shuffle
|
||||
skipStats # Track my skips
|
||||
songStats
|
||||
trashbin
|
||||
wikify # Shows an artist's wikipedia entry
|
||||
];
|
||||
};
|
||||
|
||||
# {{{ Persistence
|
||||
satellite.persistence.at.state.apps.spotify.directories = [
|
||||
"${config.xdg.configHome}/spotify"
|
||||
];
|
||||
satellite.persistence.at.state.apps.spotify.directories = [ "${config.xdg.configHome}/spotify" ];
|
||||
|
||||
satellite.persistence.at.cache.apps.spotify.directories = [
|
||||
"${config.xdg.cacheHome}/spotify"
|
||||
];
|
||||
satellite.persistence.at.cache.apps.spotify.directories = [ "${config.xdg.cacheHome}/spotify" ];
|
||||
# }}}
|
||||
}
|
||||
|
|
|
@ -1 +0,0 @@
|
|||
require("my.abbreviations.fp").setup()
|
|
@ -10,7 +10,6 @@
|
|||
"cmp_luasnip": { "branch": "master", "commit": "05a9ab28b53f71d1aece421ef32fee2cb857a843" },
|
||||
"conform": { "branch": "master", "commit": "cd75be867f2331b22905f47d28c0c270a69466aa" },
|
||||
"crates": { "branch": "main", "commit": "c3fd47391de6999f4c939af89494d08443f71916" },
|
||||
"discord-rich-presence": { "branch": "main", "commit": "87c857a56b7703f976d3a5ef15967d80508df6e6" },
|
||||
"dressing": { "branch": "master", "commit": "6741f1062d3dc6e4755367a7e9b347b553623f04" },
|
||||
"fidget": { "branch": "main", "commit": "0ba1e16d07627532b6cae915cc992ecac249fb97" },
|
||||
"flash": { "branch": "main", "commit": "d0799ae43a581d9f190e182e2a1f389d2887c42a" },
|
||||
|
@ -43,8 +42,10 @@
|
|||
"nui": { "branch": "main", "commit": "61574ce6e60c815b0a0c4b5655b8486ba58089a1" },
|
||||
"null-ls": { "branch": "main", "commit": "0010ea927ab7c09ef0ce9bf28c2b573fc302f5a7" },
|
||||
"nvim-nio": { "branch": "master", "commit": "a428f309119086dc78dd4b19306d2d67be884eee" },
|
||||
"obsidian": { "branch": "main", "commit": "14e0427bef6c55da0d63f9a313fd9941be3a2479" },
|
||||
"plenary": { "branch": "master", "commit": "a3e3bc82a3f95c5ed0d7201546d5d2c19b20d683" },
|
||||
"purescript": { "branch": "main", "commit": "82348352e6568fcc0385bd7c99a8ead3a479feea" },
|
||||
"quicker.nvim": { "branch": "master", "commit": "183041a46d6c908eefb1c23ea02cce9c8f41256e" },
|
||||
"rustacean": { "branch": "master", "commit": "5c0c44149e43b907dae2e0fe053284ad56226eb7" },
|
||||
"rzip": { "branch": "master", "commit": "f65400fed27b27c7cff7ef8d428c4e5ff749bf28" },
|
||||
"scrap": { "branch": "main", "commit": "cc8453ed613932c744c3d1ec42f379b78bd8b92c" },
|
||||
|
@ -52,6 +53,5 @@
|
|||
"typst": { "branch": "main", "commit": "4d18ced62599ffe5b3c0e5e49566d5456121bc02" },
|
||||
"undotree": { "branch": "master", "commit": "56c684a805fe948936cda0d1b19505b84ad7e065" },
|
||||
"wakatime": { "branch": "master", "commit": "3cb40867cb5a3120f9bef76eff88edc7f1dc1a23" },
|
||||
"web-devicons": { "branch": "master", "commit": "c0cfc1738361b5da1cd0a962dd6f774cc444f856" },
|
||||
"which-key.nvim": { "branch": "main", "commit": "c77cda8cd2f54965e4316699f1d124a2b3bf9d49" }
|
||||
"web-devicons": { "branch": "master", "commit": "c0cfc1738361b5da1cd0a962dd6f774cc444f856" }
|
||||
}
|
|
@ -1,15 +0,0 @@
|
|||
local A = require("my.abbreviations")
|
||||
local scrap = require("scrap")
|
||||
local M = {}
|
||||
|
||||
M.symbols = {
|
||||
{ "mto", ">>=" }, -- [M]onadic [t]o
|
||||
{ "oalt", "<|>" }, -- [O]peration [A]lternative
|
||||
{ "omono", "<>" }, -- [O]peration [M]onoid
|
||||
}
|
||||
|
||||
function M.setup()
|
||||
A.manyLocalAbbr(scrap.expand_many(M.symbols, A.no_capitalization))
|
||||
end
|
||||
|
||||
return M
|
|
@ -1,13 +0,0 @@
|
|||
local A = require("my.abbreviations")
|
||||
local scrap = require("scrap")
|
||||
local M = {}
|
||||
|
||||
M.words = {
|
||||
{ "thrf", "therefore" },
|
||||
}
|
||||
|
||||
function M.setup()
|
||||
A.manyGlobalAbbr(scrap.expand_many(M.words))
|
||||
end
|
||||
|
||||
return M
|
|
@ -23,8 +23,4 @@ function M.manyGlobalAbbr(abbreviations)
|
|||
end
|
||||
end
|
||||
|
||||
function M.setup()
|
||||
require("my.abbreviations.global").setup()
|
||||
end
|
||||
|
||||
return M
|
||||
|
|
|
@ -8,26 +8,6 @@ local function nocap(d)
|
|||
end
|
||||
|
||||
M.words = {
|
||||
-- {{{ General phrases
|
||||
{ "thrf", "therefore" },
|
||||
{ "bcla", "by contradiction let's assume" },
|
||||
{ "wlg", "without loss of generality" },
|
||||
{ "tits", "that is to say," },
|
||||
{ "wpbd", "we will prove the statement in both directions." },
|
||||
{ "stam{,s}", "statement{}" },
|
||||
{ "{ww,tt}{m,i}", "{which,this} {means,implies}" },
|
||||
{ "cex{,s}", "counterexample{}" },
|
||||
{ "er{t,s,r}", "{transitivity,symmetry,reflexivity}" },
|
||||
-- }}}
|
||||
-- {{{ Calculus & analysis
|
||||
{ "ib{p,s}", "integration by {parts,substitution}" },
|
||||
{ "{o,c,}nb{,h}{,s}", "{open,closed,} neighbour{,hood}{}" },
|
||||
{
|
||||
"{n,}{{c,}d,iv,it}ble",
|
||||
"{non-,}{{continuously,} differentia,inverti,integra}ble",
|
||||
},
|
||||
nocap({ "lshiz{c,}", "Lipschitz{ condition,}" }),
|
||||
-- }}}
|
||||
-- {{{ Linear algebra
|
||||
{ "rref", "reduced row echalon form" },
|
||||
{ "eg{va,ve,p}{,s}", "eigen{value,vector,pair}{}" },
|
||||
|
|
|
@ -6,8 +6,7 @@ end
|
|||
|
||||
function M.setup()
|
||||
require("lazy").setup({
|
||||
require("my.plugins.themes"),
|
||||
require("my.plugins.whichkey"),
|
||||
require("my.themes"),
|
||||
unpack(require("nix").lazy),
|
||||
}, {
|
||||
defaults = { lazy = true },
|
||||
|
|
|
@ -1,35 +0,0 @@
|
|||
local runtime = require("my.tempest")
|
||||
|
||||
local M = {
|
||||
"folke/which-key.nvim",
|
||||
-- event = "VeryLazy",
|
||||
lazy = true,
|
||||
cond = runtime.blacklist("vscode"),
|
||||
}
|
||||
|
||||
function M.config()
|
||||
local wk = require("which-key")
|
||||
|
||||
wk.setup({
|
||||
window = {
|
||||
winblend = 0,
|
||||
pumblend = 0,
|
||||
border = "single",
|
||||
},
|
||||
layout = { align = "center" },
|
||||
})
|
||||
|
||||
wk.register({
|
||||
["<leader>"] = {
|
||||
f = { name = "[F]iles" },
|
||||
g = { name = "[G]o to" },
|
||||
r = { name = "[R]ename / [R]eplace / [R]eload" },
|
||||
l = { name = "[L]ocal" },
|
||||
w = { name = "[W]orkspace" },
|
||||
y = { name = "[Y]ank" },
|
||||
s = { name = "[S]ettings" },
|
||||
},
|
||||
})
|
||||
end
|
||||
|
||||
return M
|
|
@ -1 +0,0 @@
|
|||
Context/!
|
Binary file not shown.
|
@ -362,9 +362,7 @@ let
|
|||
# {{{ scrap
|
||||
scrap = {
|
||||
package = "prescientmoon/scrap.nvim";
|
||||
|
||||
event = "InsertEnter";
|
||||
config.setup."my.abbreviations" = true;
|
||||
};
|
||||
# }}}
|
||||
# }}}
|
||||
|
@ -375,10 +373,6 @@ let
|
|||
name = "mini.statusline";
|
||||
dependencies.lua = [ "web-devicons" ];
|
||||
|
||||
cond = blacklist [
|
||||
"vscode"
|
||||
"firenvim"
|
||||
];
|
||||
lazy = false;
|
||||
|
||||
opts.content.inactive =
|
||||
|
@ -417,10 +411,6 @@ let
|
|||
name = "mini.files";
|
||||
dependencies.lua = [ "web-devicons" ];
|
||||
|
||||
cond = blacklist [
|
||||
"vscode"
|
||||
"firenvim"
|
||||
];
|
||||
keys = {
|
||||
mapping = "<c-s-f>";
|
||||
desc = "[S]earch [F]iles";
|
||||
|
@ -439,6 +429,17 @@ let
|
|||
opts.mappings.go_in_plus = "l";
|
||||
};
|
||||
# }}}
|
||||
# {{{ quicker.nvim
|
||||
quicker-nvim = {
|
||||
package = "stevearc/quicker.nvim";
|
||||
name = "quicker.nvim";
|
||||
dependencies.lua = [ "web-devicons" ];
|
||||
event = "FileType qf";
|
||||
|
||||
opts = { };
|
||||
};
|
||||
# }}}
|
||||
|
||||
# {{{ harpoon
|
||||
harpoon = {
|
||||
package = "ThePrimeagen/harpoon";
|
||||
|
@ -478,7 +479,6 @@ let
|
|||
telescope = {
|
||||
package = "nvim-telescope/telescope.nvim";
|
||||
version = "0.1.x";
|
||||
cond = blacklist "vscode";
|
||||
event = "VeryLazy";
|
||||
|
||||
# {{{ Dependencies
|
||||
|
@ -550,7 +550,6 @@ let
|
|||
dressing = {
|
||||
package = "stevearc/dressing.nvim";
|
||||
|
||||
cond = blacklist "vscode";
|
||||
event = "VeryLazy";
|
||||
|
||||
opts = {
|
||||
|
@ -572,7 +571,6 @@ let
|
|||
package = "lukas-reineke/indent-blankline.nvim";
|
||||
main = "ibl";
|
||||
|
||||
cond = blacklist "vscode";
|
||||
event = "VeryLazy";
|
||||
config = true;
|
||||
|
||||
|
@ -624,7 +622,6 @@ let
|
|||
package = "j-hui/fidget.nvim";
|
||||
tag = "legacy";
|
||||
|
||||
cond = blacklist "vscode";
|
||||
event = "BufReadPre";
|
||||
config = true;
|
||||
};
|
||||
|
@ -644,7 +641,6 @@ let
|
|||
|
||||
dependencies.nix = [ pkgs.tree-sitter ];
|
||||
|
||||
cond = blacklist "vscode";
|
||||
event = "VeryLazy";
|
||||
|
||||
#{{{ Highlighting
|
||||
|
@ -665,7 +661,6 @@ let
|
|||
flash = {
|
||||
package = "folke/flash.nvim";
|
||||
|
||||
cond = blacklist "vscode";
|
||||
keys =
|
||||
let
|
||||
nmap = mode: mapping: action: desc: {
|
||||
|
@ -689,7 +684,6 @@ let
|
|||
ftft = {
|
||||
package = "gukz/ftFT.nvim";
|
||||
|
||||
cond = blacklist "vscode";
|
||||
keys = [
|
||||
"f"
|
||||
"F"
|
||||
|
@ -704,7 +698,6 @@ let
|
|||
clipboard-image = {
|
||||
package = "postfen/clipboard-image.nvim";
|
||||
|
||||
cond = blacklist "firenvim";
|
||||
cmd = "PasteImg";
|
||||
|
||||
keys = {
|
||||
|
@ -734,7 +727,6 @@ let
|
|||
lastplace = {
|
||||
package = "ethanholz/nvim-lastplace";
|
||||
|
||||
cond = blacklist "vscode";
|
||||
event = "BufReadPre";
|
||||
|
||||
opts.lastplace_ignore_buftype = [
|
||||
|
@ -748,7 +740,6 @@ let
|
|||
undotree = {
|
||||
package = "mbbill/undotree";
|
||||
|
||||
cond = blacklist "vscode";
|
||||
cmd = "UndotreeToggle";
|
||||
keys = nmap "<leader>u" "<cmd>UndoTreeToggle<cr>" "[U]ndo tree";
|
||||
};
|
||||
|
@ -897,7 +888,6 @@ let
|
|||
package = "L3MON4D3/LuaSnip";
|
||||
version = "v2";
|
||||
|
||||
cond = blacklist "vscode";
|
||||
config =
|
||||
_:
|
||||
do [
|
||||
|
@ -963,7 +953,6 @@ let
|
|||
dir = miros-nvim;
|
||||
dependencies.nix = [ miros ];
|
||||
|
||||
cond = blacklist "vscode";
|
||||
ft = "miros";
|
||||
|
||||
keys = {
|
||||
|
@ -1018,7 +1007,6 @@ let
|
|||
];
|
||||
package = "neovim/nvim-lspconfig";
|
||||
|
||||
cond = blacklist "vscode";
|
||||
event = "VeryLazy";
|
||||
|
||||
config =
|
||||
|
@ -1106,7 +1094,6 @@ let
|
|||
);
|
||||
package = "stevearc/conform.nvim";
|
||||
|
||||
cond = blacklist "vscode";
|
||||
event = "VeryLazy";
|
||||
|
||||
opts.format_on_save.lsp_fallback = true;
|
||||
|
@ -1165,7 +1152,6 @@ let
|
|||
dependencies.lua = [ "lspconfig" ];
|
||||
dependencies.nix = lib.lists.optional packedTargets.python pkgs.ruff;
|
||||
|
||||
cond = blacklist "vscode";
|
||||
event = "VeryLazy";
|
||||
|
||||
opts = _: { sources = [ (require "null-ls" /builtins/diagnostics/ruff) ]; };
|
||||
|
@ -1187,7 +1173,6 @@ let
|
|||
"luasnip"
|
||||
];
|
||||
|
||||
cond = blacklist "vscode";
|
||||
event = [
|
||||
"InsertEnter"
|
||||
"CmdlineEnter"
|
||||
|
@ -1207,7 +1192,6 @@ let
|
|||
"nvim-neotest/nvim-nio"
|
||||
];
|
||||
|
||||
cond = blacklist "vscode";
|
||||
config = _: {
|
||||
setup.neotest = {
|
||||
status.virtual_text = true;
|
||||
|
@ -1245,7 +1229,6 @@ let
|
|||
dependencies.lua = [ "plenary" ];
|
||||
version = "^2";
|
||||
|
||||
cond = blacklist "vscode";
|
||||
ft = [
|
||||
"haskell"
|
||||
"lhaskell"
|
||||
|
@ -1276,7 +1259,6 @@ let
|
|||
pkgs.rustfmt
|
||||
];
|
||||
|
||||
cond = blacklist "vscode";
|
||||
lazy = false; # This plugin is already lazy
|
||||
|
||||
config.autocmds = {
|
||||
|
@ -1296,7 +1278,6 @@ let
|
|||
package = "saecki/crates.nvim";
|
||||
dependencies.lua = [ "plenary" ];
|
||||
|
||||
cond = blacklist "vscode";
|
||||
event = "BufReadPost Cargo.toml";
|
||||
|
||||
# {{{ Set up null_ls source
|
||||
|
@ -1374,7 +1355,6 @@ let
|
|||
"lspconfig"
|
||||
];
|
||||
|
||||
cond = blacklist "vscode";
|
||||
ft = "lean";
|
||||
|
||||
opts = {
|
||||
|
@ -1399,7 +1379,6 @@ let
|
|||
"lspconfig"
|
||||
];
|
||||
|
||||
cond = blacklist "vscode";
|
||||
ft = [
|
||||
"idris2"
|
||||
"lidris2"
|
||||
|
@ -1436,7 +1415,6 @@ let
|
|||
github-actions = {
|
||||
package = "yasuhiroki/github-actions-yaml.vim";
|
||||
|
||||
cond = blacklist "vscode";
|
||||
ft = [
|
||||
"yml"
|
||||
"yaml"
|
||||
|
@ -1452,7 +1430,6 @@ let
|
|||
upkgs.typstfmt
|
||||
];
|
||||
|
||||
cond = blacklist "vscode";
|
||||
ft = "typst";
|
||||
};
|
||||
# }}}
|
||||
|
@ -1460,7 +1437,6 @@ let
|
|||
purescript = {
|
||||
package = "purescript-contrib/purescript-vim";
|
||||
|
||||
cond = blacklist "vscode";
|
||||
ft = "purescript";
|
||||
};
|
||||
# }}}
|
||||
|
@ -1468,7 +1444,6 @@ let
|
|||
hyprland = {
|
||||
package = "theRealCarneiro/hyprland-vim-syntax";
|
||||
|
||||
cond = blacklist "vscode";
|
||||
ft = "hypr";
|
||||
|
||||
init.autocmds = {
|
||||
|
@ -1483,7 +1458,6 @@ let
|
|||
# Required for yarn PNP to work
|
||||
rzip = {
|
||||
package = "lbrayner/vim-rzip";
|
||||
cond = blacklist "vscode";
|
||||
event = "VeryLazy";
|
||||
};
|
||||
# }}}
|
||||
|
@ -1499,7 +1473,6 @@ let
|
|||
in
|
||||
{
|
||||
dir = "${djot}/editors/vim";
|
||||
cond = blacklist "vscode";
|
||||
ft = "djot";
|
||||
|
||||
config.autocmds = {
|
||||
|
@ -1518,10 +1491,6 @@ let
|
|||
package = "wakatime/vim-wakatime";
|
||||
dependencies.nix = [ pkgs.wakatime ];
|
||||
|
||||
cond = blacklist [
|
||||
"vscode"
|
||||
"firenvim"
|
||||
];
|
||||
event = "VeryLazy";
|
||||
};
|
||||
# }}}
|
||||
|
@ -1531,10 +1500,6 @@ let
|
|||
package = "andweeb/presence.nvim";
|
||||
main = "presence";
|
||||
|
||||
cond = blacklist [
|
||||
"vscode"
|
||||
"firenvim"
|
||||
];
|
||||
event = "VeryLazy";
|
||||
config = true;
|
||||
};
|
||||
|
@ -1545,10 +1510,6 @@ let
|
|||
package = "ruifm/gitlinker.nvim";
|
||||
dependencies.lua = [ "plenary" ];
|
||||
|
||||
cond = blacklist [
|
||||
"vscode"
|
||||
"firenvim"
|
||||
];
|
||||
opts.mappings = "<leader>yg";
|
||||
keys = {
|
||||
mapping = opts.mappings;
|
||||
|
@ -1566,16 +1527,7 @@ let
|
|||
dependencies.lua = [ "plenary" ];
|
||||
|
||||
event = "VeryLazy";
|
||||
cond = [
|
||||
(blacklist [
|
||||
"vscode"
|
||||
"firenvim"
|
||||
])
|
||||
(
|
||||
# lua
|
||||
lua "vim.loop.cwd() == ${encode obsidianVault}"
|
||||
)
|
||||
];
|
||||
cond = lua "vim.loop.cwd() == ${encode obsidianVault}";
|
||||
|
||||
config.keys =
|
||||
let
|
||||
|
@ -1623,11 +1575,7 @@ let
|
|||
# {{{ navigator
|
||||
navigator = {
|
||||
package = "numToStr/Navigator.nvim";
|
||||
cond = blacklist [
|
||||
"vscode"
|
||||
"firenvim"
|
||||
"neovide"
|
||||
];
|
||||
cond = blacklist [ "neovide" ];
|
||||
|
||||
config = true;
|
||||
keys = [
|
||||
|
|
|
@ -9,3 +9,4 @@ block auto
|
|||
abbr lor \/
|
||||
abbr langle ⟨
|
||||
abbr rangle \⟩
|
||||
abbr thrf therefore
|
||||
|
|
23
home/features/neovim/snippets/common/math-phrases.miros
Normal file
23
home/features/neovim/snippets/common/math-phrases.miros
Normal file
|
@ -0,0 +1,23 @@
|
|||
block !word
|
||||
for s <- @⟨,s⟩
|
||||
|
||||
block
|
||||
for b <- @⟨b,B⟩
|
||||
for w <- @⟨w,W⟩
|
||||
for t <- @⟨w,W⟩
|
||||
|
||||
|
||||
abbr @b⋄cla @b⋄y contradiction let's assume
|
||||
abbr @w⋄lg @w⋄ithout loss of generality
|
||||
abbr @t⋄its @t⋄hat is to say,
|
||||
abbr @w⋄pbd @w⋄e will prove the statement in both directions.
|
||||
|
||||
abbr stam@s statement@s
|
||||
abbr cex@s counterexample@s
|
||||
|
||||
for who <- @⟨which, this⟩
|
||||
for what <- @⟨means, implies⟩
|
||||
abbr @who@what @⟨@who:which,this⟩@⟨@what:means,implies⟩
|
||||
|
||||
for kind <- @⟨parts,substitution⟩
|
||||
abbr ib@⟨@kind:p,s⟩ integration by @kind
|
|
@ -14,6 +14,10 @@ let
|
|||
inputs.stylix.nixosModules.stylix
|
||||
inputs.sops-nix.nixosModules.sops
|
||||
# }}}
|
||||
# {{{ Satellite subprojects
|
||||
../../../../dns/implementation/nixos-module.nix
|
||||
../../../../dns/implementation/nixos-module-assertions.nix
|
||||
# }}}
|
||||
# {{{ global configuration
|
||||
./cli/fish.nix
|
||||
./services/openssh.nix
|
||||
|
|
|
@ -1,11 +1,11 @@
|
|||
{ config, lib, ... }:
|
||||
{ config, ... }:
|
||||
{
|
||||
sops.secrets.microbin_env.sopsFile = ../secrets.yaml;
|
||||
satellite.cloudflared.at.bin.port = config.satellite.ports.microbin;
|
||||
|
||||
services.microbin = {
|
||||
enable = true;
|
||||
dataDir = "/var/lib/microbin";
|
||||
dataDir = "/persist/state/var/lib/microbin";
|
||||
passwordFile = config.sops.secrets.microbin_env.path;
|
||||
|
||||
# {{{ Settings
|
||||
|
@ -39,11 +39,4 @@
|
|||
};
|
||||
# }}}
|
||||
};
|
||||
|
||||
systemd.services.microbin.serviceConfig = {
|
||||
# We want to use systemd's `StateDirectory` mechanism to fix permissions
|
||||
ReadWritePaths = lib.mkForce [ ];
|
||||
};
|
||||
|
||||
environment.persistence."/persist/state".directories = [ "/var/lib/private/microbin" ];
|
||||
}
|
||||
|
|
|
@ -9,15 +9,3 @@ This directory contains custom module definitions used throughout my config.
|
|||
| [common](./common) | Modules usable in both HM and nixos (and perhaps other places) |
|
||||
| [nixos](./nixos) | Nixos specific functionality |
|
||||
| [home-manager](./home-manager) | Home manager specific functionality |
|
||||
|
||||
## Common modules
|
||||
|
||||
| Name | Attribute | Description |
|
||||
| ----------------------------------------------- | --------------------------- | --------------------------------------------------------------------------------------------- |
|
||||
| [toggles](./common/toggles.nix) | `satellite.toggles` | Generic interface for feature flags |
|
||||
| [lua-lib](./common/lua-lib.nix) | `satellite.lib.lua` | Helpers for working with lua code |
|
||||
| [korora-lua](./common/korora-lua.nix) | - | Nix -> lua encoder typechecked using [korora](https://github.com/adisbladis/korora) |
|
||||
| [korora-neovim](./common/korora-neovim.nix) | - | Nix -> neovim config helpers typechecked using [korora](https://github.com/adisbladis/korora) |
|
||||
| [theming](./common/theming.nix) | `satellite.theming` | [stylix](https://github.com/danth/stylix) theming helpers and configuration |
|
||||
| [lua-colorscheme](./common/lua-colorscheme.nix) | `satellite.colorscheme.lua` | Base16 theme to lua module generation |
|
||||
| [octodns](./common/octodns.nix) | `satellite.dns.octodns` | Octodns config generation |
|
||||
|
|
|
@ -10,11 +10,3 @@
|
|||
| [korora-neovim](korora-neovim.nix) | - | Nix -> neovim config helpers |
|
||||
| [theming](theming.nix) | `satellite.theming` | Stylix theming helpers |
|
||||
| [lua-colorscheme](lua-colorscheme.nix) | `satellite.colorscheme.lua` | Base16 theme -> lua |
|
||||
|
||||
## Other modules
|
||||
|
||||
These are special-purpose modules that are used for other purposes
|
||||
|
||||
| Name | Attribute | Description |
|
||||
| ---------------------- | ----------------------- | ------------------------- |
|
||||
| [octodns](octodns.nix) | `satellite.dns.octodns` | Octodns config generation |
|
||||
|
|
|
@ -1,48 +0,0 @@
|
|||
{
|
||||
config,
|
||||
pkgs,
|
||||
lib,
|
||||
...
|
||||
}:
|
||||
let
|
||||
format = pkgs.formats.yaml { };
|
||||
cfg = config.satellite.dns;
|
||||
in
|
||||
{
|
||||
options.satellite.dns.octodns = lib.mkOption {
|
||||
description = "Derivation building a directory containing all the zone files";
|
||||
type = lib.types.path;
|
||||
};
|
||||
|
||||
config.satellite.dns.octodns =
|
||||
let
|
||||
grouped = builtins.groupBy (entry: entry.zone) cfg.records;
|
||||
cpLines = lib.mapAttrsToList (
|
||||
zone: group:
|
||||
let
|
||||
grouped = builtins.groupBy (entry: entry.at) group;
|
||||
contents = lib.mapAttrs (
|
||||
at: entries:
|
||||
lib.lists.forEach entries (
|
||||
entry:
|
||||
let
|
||||
content =
|
||||
if builtins.typeOf entry.value == "list" then
|
||||
{ values = entry.value; }
|
||||
else
|
||||
{ inherit (entry) value; };
|
||||
cloudflare = if entry.enableCloudflareProxy then { octodns.cloudflare.proxied = true; } else { };
|
||||
in
|
||||
{ inherit (entry) ttl type; } // content // cloudflare
|
||||
)
|
||||
) grouped;
|
||||
file = format.generate "${zone}.yaml" contents;
|
||||
in
|
||||
"cp ${file} $out/${zone}.yaml"
|
||||
) grouped;
|
||||
in
|
||||
pkgs.runCommand "octodns-zones" { } ''
|
||||
mkdir $out
|
||||
${lib.concatStringsSep "\n" cpLines}
|
||||
'';
|
||||
}
|
|
@ -1,11 +1,9 @@
|
|||
# Nixos modules
|
||||
|
||||
| Name | Attribute | Description |
|
||||
| ------------------------------------ | ----------------------- | ------------------------------------ |
|
||||
| [pounce](pounce.nix) | `services.pounce` | Pounce & calico configuration |
|
||||
| [nginx](nginx.nix) | `satellite.nginx` | Nginx configuration |
|
||||
| [ports](ports.nix) | `satellite.ports` | Global port specification |
|
||||
| [cloudflared](cloudflared.nix) | `satellite.cloudflared` | Cloudflare tunnel configuration |
|
||||
| [pilot](pilot.nix) | `satellite.pilot` | Defines the concept of a "main user" |
|
||||
| [dns](dns.nix) | `satellite.dns` | DNS record creation |
|
||||
| [dns-assertions](dns-assertions.nix) | `satellite.dns` | DNS record validation |
|
||||
| Name | Attribute | Description |
|
||||
| ------------------------------ | ----------------------- | ------------------------------------ |
|
||||
| [pounce](pounce.nix) | `services.pounce` | Pounce & calico configuration |
|
||||
| [nginx](nginx.nix) | `satellite.nginx` | Nginx configuration |
|
||||
| [ports](ports.nix) | `satellite.ports` | Global port specification |
|
||||
| [cloudflared](cloudflared.nix) | `satellite.cloudflared` | Cloudflare tunnel configuration |
|
||||
| [pilot](pilot.nix) | `satellite.pilot` | Defines the concept of a "main user" |
|
||||
|
|
|
@ -7,6 +7,4 @@
|
|||
nginx = ./nginx.nix;
|
||||
pilot = ./pilot.nix;
|
||||
pounce = ./pounce.nix;
|
||||
dns = ./dns.nix;
|
||||
dns-assertions = ./dns-assertions.nix;
|
||||
}
|
||||
|
|
|
@ -9,21 +9,8 @@
|
|||
let
|
||||
plymouthThemes = pkgs.callPackage (import ./plymouth-themes.nix) { };
|
||||
in
|
||||
rec {
|
||||
{
|
||||
plymouthThemeCutsAlt = plymouthThemes.cuts_alt;
|
||||
vimclip = pkgs.callPackage (import ./vimclip.nix) { };
|
||||
homer = pkgs.callPackage (import ./homer.nix) { };
|
||||
|
||||
octodns = pkgs.octodns.overrideAttrs (_: {
|
||||
version = "unstable-2024-10-08";
|
||||
src = pkgs.fetchFromGitHub {
|
||||
owner = "octodns";
|
||||
repo = "octodns";
|
||||
rev = "a1456cb1fcf00916ca06b204755834210a3ea9cf";
|
||||
sha256 = "192hbxhb0ghcbzqy3h8q194n4iy7bqfj9ra9qqjff3x2z223czxb";
|
||||
};
|
||||
});
|
||||
octodns-cloudflare = pkgs.python3Packages.callPackage (import ./octodns-cloudflare.nix) {
|
||||
inherit octodns;
|
||||
};
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue