1
0
Fork 0

Update for flake-manager rebase

This commit is contained in:
Ethan Reece 2026-01-23 18:02:43 -06:00
parent f9f1646563
commit 20eea169d4
Signed by: me
GPG key ID: DD8CE04D5D8FF832
9 changed files with 639 additions and 220 deletions

10
.envrc
View file

@ -1,6 +1,10 @@
# SPDX-FileCopyrightText: 2025 Ethan Reece <contact@ethanreece.com>
# SPDX-FileCopyrightText: 2025-2026 Ethan Reece <contact@ethanreece.com>
#
# SPDX-License-Identifier: MIT
watch_file **/default.nix
use flake
watch_file resumes/default.nix
watch_file resumes/default/default.nix
watch_file resumes/full/default.nix
watch_file resumes/phd/default.nix
watch_file resumes/systems/default.nix
use flake . --no-pure-eval

3
.gitignore vendored
View file

@ -1,7 +1,8 @@
# SPDX-FileCopyrightText: 2025 Ethan Reece <contact@ethanreece.com>
# SPDX-FileCopyrightText: 2025-2026 Ethan Reece <contact@ethanreece.com>
#
# SPDX-License-Identifier: MIT
.devenv
.direnv
.helix
.pre-commit-config.yaml

422
flake.lock generated
View file

@ -1,15 +1,80 @@
{
"nodes": {
"cachix": {
"inputs": {
"devenv": [
"devenv"
],
"flake-compat": [
"devenv",
"flake-compat"
],
"git-hooks": [
"devenv",
"git-hooks"
],
"nixpkgs": [
"devenv",
"nixpkgs"
]
},
"locked": {
"lastModified": 1760971495,
"narHash": "sha256-IwnNtbNVrlZIHh7h4Wz6VP0Furxg9Hh0ycighvL5cZc=",
"owner": "cachix",
"repo": "cachix",
"rev": "c5bfd933d1033672f51a863c47303fc0e093c2d2",
"type": "github"
},
"original": {
"owner": "cachix",
"ref": "latest",
"repo": "cachix",
"type": "github"
}
},
"devenv": {
"inputs": {
"cachix": "cachix",
"flake-compat": "flake-compat",
"flake-parts": [
"flake-parts"
],
"git-hooks": [
"git-hooks-nix"
],
"nix": "nix",
"nixd": [
"nixd"
],
"nixpkgs": [
"nixpkgs"
]
},
"locked": {
"lastModified": 1769201893,
"narHash": "sha256-x6VW1lQikNZAVm59gb3tzpDU5QCHT8U1e4dU11F2evY=",
"owner": "cachix",
"repo": "devenv",
"rev": "685a86068d3a7f9b04e18340187e288413cb5887",
"type": "github"
},
"original": {
"owner": "cachix",
"repo": "devenv",
"type": "github"
}
},
"devshell": {
"inputs": {
"nixpkgs": "nixpkgs"
},
"locked": {
"lastModified": 1764011051,
"narHash": "sha256-M7SZyPZiqZUR/EiiBJnmyUbOi5oE/03tCeFrTiUZchI=",
"lastModified": 1768818222,
"narHash": "sha256-460jc0+CZfyaO8+w8JNtlClB2n4ui1RbHfPTLkpwhU8=",
"owner": "numtide",
"repo": "devshell",
"rev": "17ed8d9744ebe70424659b0ef74ad6d41fc87071",
"rev": "255a2b1725a20d060f566e4755dbf571bbbb5f76",
"type": "github"
},
"original": {
@ -19,6 +84,22 @@
}
},
"flake-compat": {
"flake": false,
"locked": {
"lastModified": 1761588595,
"narHash": "sha256-XKUZz9zewJNUj46b4AJdiRZJAvSZ0Dqj2BNfXvFlJC4=",
"owner": "edolstra",
"repo": "flake-compat",
"rev": "f387cd2afec9419c8ee37694406ca490c3f34ee5",
"type": "github"
},
"original": {
"owner": "edolstra",
"repo": "flake-compat",
"type": "github"
}
},
"flake-compat_2": {
"flake": false,
"locked": {
"lastModified": 1767039857,
@ -34,10 +115,10 @@
"type": "github"
}
},
"flake-lib": {
"flake-manager": {
"inputs": {
"devshell": [
"devshell"
"devenv": [
"devenv"
],
"flake-parts": [
"flake-parts"
@ -45,35 +126,49 @@
"git-hooks-nix": [
"git-hooks-nix"
],
"goern-forgejo-mcp-flake": "goern-forgejo-mcp-flake",
"lix": [
"lix"
],
"lix-module": [
"lix-module"
],
"mcp-servers-nix": [
"mcp-servers-nix"
],
"nixd": [
"nixd"
],
"nixgl": [
"nixgl"
],
"nixpkgs": [
"nixpkgs"
],
"nixpkgs-master": [
"nixpkgs-master"
],
"nixpkgs-stable": [
"nixpkgs-stable"
],
"treefmt-nix": [
"treefmt-nix"
]
],
"vale-at-red-hat": "vale-at-red-hat"
},
"locked": {
"lastModified": 1767672220,
"narHash": "sha256-Z/8cjhl6t4iZHoE18UNEj+ndKkUqG9+H58mwbqH9Bos=",
"lastModified": 1769212721,
"narHash": "sha256-ncQNaQz14OKmv+IJ2dfNNwQvxVPgAQnxsfhhATvz7hw=",
"ref": "main",
"rev": "dea2514bab53de5f1293e1d7d452625245c17cad",
"revCount": 91,
"rev": "a319be2b7130a8ab51a6af16d6daba8d46da3d8d",
"revCount": 197,
"type": "git",
"url": "https://git.sudoer777.dev/me/nix-flake-base.git"
"url": "https://codeberg.org/ethanreece/flake-manager.git"
},
"original": {
"ref": "main",
"type": "git",
"url": "https://git.sudoer777.dev/me/nix-flake-base.git"
"url": "https://codeberg.org/ethanreece/flake-manager.git"
}
},
"flake-parts": {
@ -83,11 +178,11 @@
]
},
"locked": {
"lastModified": 1767609335,
"narHash": "sha256-feveD98mQpptwrAEggBQKJTYbvwwglSbOv53uCfH9PY=",
"lastModified": 1768135262,
"narHash": "sha256-PVvu7OqHBGWN16zSi6tEmPwwHQ4rLPU9Plvs8/1TUBY=",
"owner": "hercules-ci",
"repo": "flake-parts",
"rev": "250481aafeb741edfe23d29195671c19b36b6dca",
"rev": "80daad04eddbbf5a4d883996a73f3f542fa437ac",
"type": "github"
},
"original": {
@ -96,6 +191,21 @@
"type": "github"
}
},
"flake-root": {
"locked": {
"lastModified": 1723604017,
"narHash": "sha256-rBtQ8gg+Dn4Sx/s+pvjdq3CB2wQNzx9XGFq/JVGCB6k=",
"owner": "srid",
"repo": "flake-root",
"rev": "b759a56851e10cb13f6b8e5698af7b59c44be26e",
"type": "github"
},
"original": {
"owner": "srid",
"repo": "flake-root",
"type": "github"
}
},
"flake-utils": {
"inputs": {
"systems": "systems"
@ -132,6 +242,24 @@
"type": "github"
}
},
"flake-utils_3": {
"inputs": {
"systems": "systems_3"
},
"locked": {
"lastModified": 1731533236,
"narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=",
"owner": "numtide",
"repo": "flake-utils",
"rev": "11707dc2f618dd54ca8739b309ec4fc024de578b",
"type": "github"
},
"original": {
"owner": "numtide",
"repo": "flake-utils",
"type": "github"
}
},
"flakey-profile": {
"locked": {
"lastModified": 1712898590,
@ -147,18 +275,35 @@
"type": "github"
}
},
"forgejo-mcp-src": {
"flake": false,
"locked": {
"lastModified": 1767092819,
"narHash": "sha256-2MSijIu//kLYB7xykixZR5KOO77/R5IYoozrbfMKmQ8=",
"ref": "refs/tags/v2.4.2",
"rev": "f2988a7c82a62dea99ad767c81d8589c71692f66",
"revCount": 177,
"type": "git",
"url": "https://codeberg.org/goern/forgejo-mcp"
},
"original": {
"ref": "refs/tags/v2.4.2",
"type": "git",
"url": "https://codeberg.org/goern/forgejo-mcp"
}
},
"git-hooks-nix": {
"inputs": {
"flake-compat": "flake-compat",
"flake-compat": "flake-compat_2",
"gitignore": "gitignore",
"nixpkgs": "nixpkgs_2"
},
"locked": {
"lastModified": 1767281941,
"narHash": "sha256-6MkqajPICgugsuZ92OMoQcgSHnD6sJHwk8AxvMcIgTE=",
"lastModified": 1769069492,
"narHash": "sha256-Efs3VUPelRduf3PpfPP2ovEB4CXT7vHf8W+xc49RL/U=",
"owner": "cachix",
"repo": "git-hooks.nix",
"rev": "f0927703b7b1c8d97511c4116eb9b4ec6645a0fa",
"rev": "a1ef738813b15cf8ec759bdff5761b027e3e1d23",
"type": "github"
},
"original": {
@ -188,14 +333,38 @@
"type": "github"
}
},
"goern-forgejo-mcp-flake": {
"inputs": {
"flake-utils": "flake-utils",
"forgejo-mcp-src": "forgejo-mcp-src",
"nixpkgs": [
"flake-manager",
"nixpkgs"
]
},
"locked": {
"lastModified": 1767382257,
"narHash": "sha256-15YCFfBpqO9EBOP/76S248fI2D5IzqQPodFjbX8vnTE=",
"ref": "develop",
"rev": "1b52e1c738297e19939cbbbbd517d32fcb094d59",
"revCount": 5,
"type": "git",
"url": "https://codeberg.org/byteflavour/goern-forgejo-mcp-flake.git"
},
"original": {
"ref": "develop",
"type": "git",
"url": "https://codeberg.org/byteflavour/goern-forgejo-mcp-flake.git"
}
},
"lix": {
"flake": false,
"locked": {
"lastModified": 1767567624,
"narHash": "sha256-5HmZQOzYxYUtlxmMSJ81ixwsBR0uHgZQL4YjEpF3geU=",
"rev": "7b8947ea636acbaec9c18d35daa87848b388c025",
"lastModified": 1769177211,
"narHash": "sha256-DXYZIBQaUeBHATHvbXDihvUgcudjMksfC3xag14UTjo=",
"rev": "cb34b56feab947992d8183fd1056170d488158d0",
"type": "tarball",
"url": "https://git.lix.systems/api/v1/repos/lix-project/lix/archive/7b8947ea636acbaec9c18d35daa87848b388c025.tar.gz?rev=7b8947ea636acbaec9c18d35daa87848b388c025"
"url": "https://git.lix.systems/api/v1/repos/lix-project/lix/archive/cb34b56feab947992d8183fd1056170d488158d0.tar.gz?rev=cb34b56feab947992d8183fd1056170d488158d0"
},
"original": {
"type": "tarball",
@ -204,7 +373,7 @@
},
"lix-module": {
"inputs": {
"flake-utils": "flake-utils",
"flake-utils": "flake-utils_2",
"flakey-profile": "flakey-profile",
"lix": [
"lix"
@ -225,9 +394,94 @@
"url": "https://git.lix.systems/lix-project/nixos-module/archive/main.tar.gz"
}
},
"mcp-servers-nix": {
"inputs": {
"nixpkgs": [
"nixpkgs"
]
},
"locked": {
"lastModified": 1768874504,
"narHash": "sha256-uJJlU24jbuqv2Iyaep+56uLrtO5w3r1BO4wSvGGMr+o=",
"owner": "natsukium",
"repo": "mcp-servers-nix",
"rev": "86387b519df7151a0b40eb50d953b16ecfcef83c",
"type": "github"
},
"original": {
"owner": "natsukium",
"repo": "mcp-servers-nix",
"type": "github"
}
},
"nix": {
"inputs": {
"flake-compat": [
"devenv",
"flake-compat"
],
"flake-parts": [
"devenv",
"flake-parts"
],
"git-hooks-nix": [
"devenv",
"git-hooks"
],
"nixpkgs": [
"devenv",
"nixpkgs"
],
"nixpkgs-23-11": [
"devenv"
],
"nixpkgs-regression": [
"devenv"
]
},
"locked": {
"lastModified": 1769197468,
"narHash": "sha256-EhbVSjqhjykjIzF1FetpEwxjSMXg4ubHpkuEnE0y23A=",
"owner": "cachix",
"repo": "nix",
"rev": "6174571301a92afce9b7296d5babdc56972695b7",
"type": "github"
},
"original": {
"owner": "cachix",
"ref": "devenv-2.32",
"repo": "nix",
"type": "github"
}
},
"nixd": {
"inputs": {
"flake-parts": [
"flake-parts"
],
"flake-root": "flake-root",
"nixpkgs": [
"nixpkgs"
],
"treefmt-nix": "treefmt-nix"
},
"locked": {
"lastModified": 1768402933,
"narHash": "sha256-iNjr5pE5SvawTT3byEIU65FzWTMMjVfRhPXa2m818jM=",
"owner": "nix-community",
"repo": "nixd",
"rev": "13a89b59d0711390f0c765e693509f8282a1ff7e",
"type": "github"
},
"original": {
"owner": "nix-community",
"repo": "nixd",
"type": "github"
}
},
"nixgl": {
"inputs": {
"flake-utils": "flake-utils_2",
"flake-utils": "flake-utils_3",
"nixpkgs": [
"nixpkgs"
]
@ -262,6 +516,38 @@
"type": "github"
}
},
"nixpkgs-master": {
"locked": {
"lastModified": 1769212222,
"narHash": "sha256-GWcAD0z2Il6VA/Be5wVMyxODKXUg/jnwX8zAIb+hM2s=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "d3417b69c947918b478d458420186d4b71d34ffb",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "master",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs-stable": {
"locked": {
"lastModified": 1769089682,
"narHash": "sha256-9yA/LIuAVQq0lXelrZPjLuLVuZdm03p8tfmHhnDIkms=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "078d69f03934859a181e81ba987c2bb033eebfc5",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixos-25.11",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs_2": {
"locked": {
"lastModified": 1764947035,
@ -280,27 +566,27 @@
},
"nixpkgs_3": {
"locked": {
"lastModified": 1767364772,
"narHash": "sha256-fFUnEYMla8b7UKjijLnMe+oVFOz6HjijGGNS1l7dYaQ=",
"lastModified": 1769018530,
"narHash": "sha256-MJ27Cy2NtBEV5tsK+YraYr2g851f3Fl1LpNHDzDX15c=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "16c7794d0a28b5a37904d55bcca36003b9109aaa",
"rev": "88d3861acdd3d2f0e361767018218e51810df8a1",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixpkgs-unstable",
"ref": "nixos-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs_4": {
"locked": {
"lastModified": 1761236834,
"narHash": "sha256-+pthv6hrL5VLW2UqPdISGuLiUZ6SnAXdd2DdUE+fV2Q=",
"lastModified": 1767364772,
"narHash": "sha256-fFUnEYMla8b7UKjijLnMe+oVFOz6HjijGGNS1l7dYaQ=",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "d5faa84122bc0a1fd5d378492efce4e289f8eac1",
"rev": "16c7794d0a28b5a37904d55bcca36003b9109aaa",
"type": "github"
},
"original": {
@ -312,15 +598,20 @@
},
"root": {
"inputs": {
"devenv": "devenv",
"devshell": "devshell",
"flake-lib": "flake-lib",
"flake-manager": "flake-manager",
"flake-parts": "flake-parts",
"git-hooks-nix": "git-hooks-nix",
"lix": "lix",
"lix-module": "lix-module",
"mcp-servers-nix": "mcp-servers-nix",
"nixd": "nixd",
"nixgl": "nixgl",
"nixpkgs": "nixpkgs_3",
"treefmt-nix": "treefmt-nix"
"nixpkgs-master": "nixpkgs-master",
"nixpkgs-stable": "nixpkgs-stable",
"treefmt-nix": "treefmt-nix_2"
}
},
"systems": {
@ -353,16 +644,34 @@
"type": "github"
}
},
"systems_3": {
"locked": {
"lastModified": 1681028828,
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
"owner": "nix-systems",
"repo": "default",
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
"type": "github"
},
"original": {
"owner": "nix-systems",
"repo": "default",
"type": "github"
}
},
"treefmt-nix": {
"inputs": {
"nixpkgs": "nixpkgs_4"
"nixpkgs": [
"nixd",
"nixpkgs"
]
},
"locked": {
"lastModified": 1767468822,
"narHash": "sha256-MpffQxHxmjVKMiQd0Tg2IM/bSjjdQAM+NDcX6yxj7rE=",
"lastModified": 1734704479,
"narHash": "sha256-MMi74+WckoyEWBRcg/oaGRvXC9BVVxDZNRMpL+72wBI=",
"owner": "numtide",
"repo": "treefmt-nix",
"rev": "d56486eb9493ad9c4777c65932618e9c2d0468fc",
"rev": "65712f5af67234dad91a5a4baee986a8b62dbf8f",
"type": "github"
},
"original": {
@ -370,6 +679,41 @@
"repo": "treefmt-nix",
"type": "github"
}
},
"treefmt-nix_2": {
"inputs": {
"nixpkgs": "nixpkgs_4"
},
"locked": {
"lastModified": 1768158989,
"narHash": "sha256-67vyT1+xClLldnumAzCTBvU0jLZ1YBcf4vANRWP3+Ak=",
"owner": "numtide",
"repo": "treefmt-nix",
"rev": "e96d59dff5c0d7fddb9d113ba108f03c3ef99eca",
"type": "github"
},
"original": {
"owner": "numtide",
"repo": "treefmt-nix",
"type": "github"
}
},
"vale-at-red-hat": {
"flake": false,
"locked": {
"lastModified": 1768838260,
"narHash": "sha256-DSsd/w8oF6SFiq0wsonVNWrKSlmCyf5Wv7JN6q/lJxQ=",
"owner": "redhat-documentation",
"repo": "vale-at-red-hat",
"rev": "5abd88c1d80cc4dd1d9cefd1d922f097ee227a47",
"type": "github"
},
"original": {
"owner": "redhat-documentation",
"ref": "main",
"repo": "vale-at-red-hat",
"type": "github"
}
}
},
"root": "root",

246
flake.nix
View file

@ -8,17 +8,30 @@
{
description = "Résumé";
inputs = {
flake-lib = {
url = "git+https://git.sudoer777.dev/me/nix-flake-base.git?ref=main";
devenv = {
url = "github:cachix/devenv";
inputs = {
flake-parts.follows = "flake-parts";
git-hooks.follows = "git-hooks-nix";
nixd.follows = "nixd";
nixpkgs.follows = "nixpkgs";
};
};
flake-manager = {
url = "git+https://codeberg.org/ethanreece/flake-manager.git?ref=main";
flake = true;
inputs = {
devshell.follows = "devshell";
devenv.follows = "devenv";
flake-parts.follows = "flake-parts";
git-hooks-nix.follows = "git-hooks-nix";
lix.follows = "lix";
lix-module.follows = "lix-module";
mcp-servers-nix.follows = "mcp-servers-nix";
nixd.follows = "nixd";
nixgl.follows = "nixgl";
nixpkgs.follows = "nixpkgs";
nixpkgs-master.follows = "nixpkgs-master";
nixpkgs-stable.follows = "nixpkgs-stable";
treefmt-nix.follows = "treefmt-nix";
};
};
@ -38,11 +51,24 @@
inputs.nixpkgs.follows = "nixpkgs";
inputs.lix.follows = "lix";
};
mcp-servers-nix = {
url = "github:natsukium/mcp-servers-nix";
inputs.nixpkgs.follows = "nixpkgs";
};
nixd = {
url = "github:nix-community/nixd";
inputs = {
flake-parts.follows = "flake-parts";
nixpkgs.follows = "nixpkgs";
};
};
nixgl = {
url = "github:nix-community/nixGL";
inputs.nixpkgs.follows = "nixpkgs";
};
nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable";
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
nixpkgs-master.url = "github:NixOS/nixpkgs/master";
nixpkgs-stable.url = "github:NixOS/nixpkgs/nixos-25.11";
treefmt-nix.url = "github:numtide/treefmt-nix";
};
outputs =
@ -55,69 +81,119 @@
"x86_64-linux"
];
imports = [
inputs.flake-lib.flakeModule
./resumes
inputs.flake-manager.flakeModule
(inputs.flake-manager.lib.importModule {
specialArgs = { inherit inputs; };
file = ./resumes;
})
];
perSystem =
{ pkgs, system, ... }:
{
settings = {
reuse.enable = true;
config,
lib,
pkgs,
system,
...
}:
{
flake-manager = {
useUnstableLix = true;
};
editors.helix.enable = true;
languages = {
en-us = {
enable = true;
dictionary = [
"ABCAST"
"APIs"
"Astro"
"ASP.NET"
"Birman"
"Cyber"
"devenv"
"Dokku"
"EasyOpenCV"
"FFmpeg"
"Forgejo"
"Guix"
"Hetzner"
"Jee"
"Jira"
"Jonsson"
"Kangkook"
"lang"
"LEGO"
"linguify"
"MAUI"
"MIPS"
"multicast"
"multifactor"
"Nextcloud"
"ProvViz"
"Proxmox"
"pwntools"
"Reece"
"Raynal"
"Rustyline"
"Schiper"
"Serde"
"shellcode"
"Syssec"
"Technics"
"Tetris"
"TikZ"
"Tokio"
"toolchain"
"TrueNAS"
"typ"
"Valgrind"
"Vaultwarden"
"Verilog"
"VMs"
];
vale = {
devenv.shells = lib.genAttrs config.flake-manager.shells (name: {
flake-manager = {
formatters.enable = true;
git-hooks.enable = true;
network = {
allowFirstParty = true;
allowThirdParty = true;
};
reuse.enable = true;
};
editors = {
helix.enable = true;
opencode.enable = true;
};
languages = {
en-us = {
enable = true;
dictionary = [
"ABCAST"
"APIs"
"Astro"
"ASP.NET"
"Birman"
"Cyber"
"devenv"
"Dokku"
"EasyOpenCV"
"FFmpeg"
"Forgejo"
"Guix"
"Hetzner"
"Jee"
"Jira"
"Jonsson"
"Kangkook"
"lang"
"LEGO"
"linguify"
"MAUI"
"MIPS"
"multicast"
"multifactor"
"Nextcloud"
"ProvViz"
"Proxmox"
"pwntools"
"Reece"
"Raynal"
"Rustyline"
"Schiper"
"Serde"
"shellcode"
"Syssec"
"Technics"
"Tetris"
"TikZ"
"Tokio"
"toolchain"
"TrueNAS"
"typ"
"Valgrind"
"Vaultwarden"
"Verilog"
"VMs"
];
};
git-commit.enable = true;
markdown.enable = true;
nix.enable = true;
toml.enable = true;
yaml.enable = true;
typst = {
enable = true;
package = pkgs.typst.withPackages (
ps: with ps; [
cmarker
fontawesome
linguify
]
);
fonts = [
pkgs.font-awesome
pkgs.inter
pkgs.jetbrains-mono
];
args = [
"--input"
"lang=en"
"--input"
"region=US"
];
};
};
language-servers = {
vale-ls.settings.perGlob = {
"**/README.md".packages = {
alex.enable = true;
Joblint.enable = true;
@ -127,50 +203,10 @@
};
};
};
git-commit.enable = true;
markdown.enable = true;
nix.enable = true;
toml.enable = true;
yaml.enable = true;
typst = {
enable = true;
package = pkgs.typst.withPackages (
ps: with ps; [
cmarker
fontawesome
linguify
]
);
fonts = pkgs.buildEnv {
name = "fonts";
paths = [
pkgs.font-awesome
pkgs.inter
pkgs.jetbrains-mono
];
};
args = [
"--input"
"lang=en"
"--input"
"region=US"
];
git-hooks.hooks.markdownlint.settings.configuration = {
"MD024" = false; # Disable `no-duplicate-heading`
};
};
pre-commit.settings.hooks.markdownlint.settings.configuration = {
"MD024" = false; # Disable `no-duplicate-heading`
};
devshells.default = {
packages = [ pkgs.forgejo-cli ];
# reuse annotate -c "Ethan Reece <contact@ethanreece.com>" -l MIT -y 2025
devshell = {
motd = ''
{202} Résumé{reset}
$(type -p menu &>/dev/null && menu)
'';
name = "Resume";
};
};
});
};
}
);

View file

@ -1,48 +1,58 @@
# SPDX-FileCopyrightText: 2025 Ethan Reece <contact@ethanreece.com>
# SPDX-FileCopyrightText: 2025-2026 Ethan Reece <contact@ethanreece.com>
#
# SPDX-License-Identifier: MIT
{ inputs, ... }:
{ flake-parts-lib, ... }:
let
entries = builtins.attrNames (builtins.readDir ./.);
modules = builtins.filter (dir: builtins.pathExists (./. + "/${dir}/default.nix")) entries;
modules = inputs.flake-manager.lib.getModules {
path = ./.;
fileName = "default.nix";
};
in
{
imports = builtins.map (
module-name: flake-parts-lib.importApply (./. + "/${module-name}") { inherit module-name; }
) modules;
imports = inputs.flake-manager.lib.importModules {
specialArgs = { inherit inputs; };
path = ./.;
fileName = "default.nix";
};
perSystem =
{ config, pkgs, ... }:
{
languages.typst.entrypoints = builtins.listToAttrs (
map (name: {
inherit name;
value = "resumes/${name}/main.typ";
}) modules
);
packages = builtins.listToAttrs (
map (name: {
inherit name;
value = pkgs.stdenvNoCC.mkDerivation (
let
compileCommand = "${config.languages.typst.package}/bin/typst compile --ignore-system-fonts --font-path ${config.languages.typst.fonts}/share/fonts --root=../../ --input region=US --pdf-standard ua-1 resumes/${name}/main.typ";
in
{
name = "resume-${name}";
src = ./..;
buildPhase = ''
${compileCommand} --input lang=en resume.en_US.pdf
${compileCommand} --input lang=eo resume.eo.pdf
'';
installPhase = ''
#!${pkgs.nushell}/bin/nu
mkdir -p $out
cp resume.en_US.pdf $out/resume.en_US.pdf
cp resume.eo.pdf $out/resume.eo.pdf
'';
}
);
}) modules
config,
lib,
pkgs,
...
}:
{
flake-manager.shells = modules;
devenv.shells = lib.genAttrs modules (name: {
languages.typst.entrypoint = "resumes/${name}/main.typ";
});
packages = lib.genAttrs modules (
name:
pkgs.stdenvNoCC.mkDerivation (
let
compileCommand = "${
lib.getExe' config.devenv.shells.${name}.languages.typst.package "typst"
} compile --ignore-system-fonts --font-path ${
config.devenv.shells.${name}.languages.typst.fontsPackage
}/share/fonts --root=../../ --input region=US --pdf-standard ua-1 resumes/${name}/main.typ";
in
{
name = "resume-${name}";
src = ./..;
buildPhase = ''
${compileCommand} --input lang=en resume.en_US.pdf
${compileCommand} --input lang=eo resume.eo.pdf
'';
installPhase = ''
#!${lib.getExe' pkgs.nushell "nu"}
mkdir -p $out
cp resume.en_US.pdf $out/resume.en_US.pdf
cp resume.eo.pdf $out/resume.eo.pdf
'';
}
)
);
};
}

View file

@ -1,15 +1,21 @@
# SPDX-FileCopyrightText: 2025 Ethan Reece <contact@ethanreece.com>
# SPDX-FileCopyrightText: 2025-2026 Ethan Reece <contact@ethanreece.com>
#
# SPDX-License-Identifier: MIT
{ module-name }:
{ module-name, ... }:
{ ... }:
{
perSystem.languages.en-us.vale."**/resumes/${module-name}/*.en_US.md".packages = {
alex.enable = true;
Joblint.enable = true;
proselint.enable = true;
RedHat.enable = true;
write-good.enable = true;
};
perSystem =
{ config, lib, ... }:
{
devenv.shells = lib.genAttrs config.flake-manager.shells (_: {
language-servers.vale-ls.settings.perGlob."**/resumes/${module-name}/*.en_US.md".packages = {
alex.enable = true;
Joblint.enable = true;
proselint.enable = true;
RedHat.enable = true;
write-good.enable = true;
};
});
};
}

View file

@ -1,15 +1,21 @@
# SPDX-FileCopyrightText: 2025 Ethan Reece <contact@ethanreece.com>
# SPDX-FileCopyrightText: 2025-2026 Ethan Reece <contact@ethanreece.com>
#
# SPDX-License-Identifier: MIT
{ module-name }:
{ module-name, ... }:
{ ... }:
{
perSystem.languages.en-us.vale."**/resumes/${module-name}/*.en_US.md".packages = {
alex.enable = true;
Joblint.enable = true;
proselint.enable = true;
RedHat.enable = true;
write-good.enable = true;
};
perSystem =
{ config, lib, ... }:
{
devenv.shells = lib.genAttrs config.flake-manager.shells (_: {
language-servers.vale-ls.settings.perGlob."**/resumes/${module-name}/*.en_US.md".packages = {
alex.enable = true;
Joblint.enable = true;
proselint.enable = true;
RedHat.enable = true;
write-good.enable = true;
};
});
};
}

View file

@ -1,15 +1,21 @@
# SPDX-FileCopyrightText: 2025 Ethan Reece <contact@ethanreece.com>
# SPDX-FileCopyrightText: 2025-2026 Ethan Reece <contact@ethanreece.com>
#
# SPDX-License-Identifier: MIT
{ module-name }:
{ module-name, ... }:
{ ... }:
{
perSystem.languages.en-us.vale."**/resumes/${module-name}/*.en_US.md".packages = {
alex.enable = true;
Joblint.enable = true;
proselint.enable = true;
RedHat.enable = true;
write-good.enable = true;
};
perSystem =
{ config, lib, ... }:
{
devenv.shells = lib.genAttrs config.flake-manager.shells (_: {
language-servers.vale-ls.settings.perGlob."**/resumes/${module-name}/*.en_US.md".packages = {
alex.enable = true;
Joblint.enable = true;
proselint.enable = true;
RedHat.enable = true;
write-good.enable = true;
};
});
};
}

View file

@ -1,15 +1,21 @@
# SPDX-FileCopyrightText: 2025 Ethan Reece <contact@ethanreece.com>
# SPDX-FileCopyrightText: 2025-2026 Ethan Reece <contact@ethanreece.com>
#
# SPDX-License-Identifier: MIT
{ module-name }:
{ module-name, ... }:
{ ... }:
{
perSystem.languages.en-us.vale."**/resumes/${module-name}/*.en_US.md".packages = {
alex.enable = true;
Joblint.enable = true;
proselint.enable = true;
RedHat.enable = true;
write-good.enable = true;
};
perSystem =
{ config, lib, ... }:
{
devenv.shells = lib.genAttrs config.flake-manager.shells (_: {
language-servers.vale-ls.settings.perGlob."**/resumes/${module-name}/*.en_US.md".packages = {
alex.enable = true;
Joblint.enable = true;
proselint.enable = true;
RedHat.enable = true;
write-good.enable = true;
};
});
};
}