Compare commits

...
Sign in to create a new pull request.

145 commits

Author SHA1 Message Date
cy
df2f9668f1
use ghidra-bin cause debugger works 2025-02-04 10:11:36 -05:00
cy
0029f8f822
comment out gtk config 2025-02-02 16:09:55 -05:00
cy
78f94a6429
flake update
Signed-off-by: cy <cy@cy7.sh>
2025-02-02 15:26:01 -05:00
cy
11fb3de60c
some more plasma config 2025-02-02 15:25:04 -05:00
cy
c9d700390c
manually redirect renamed repo 2025-02-02 10:52:53 -05:00
cy
b131f134bc
add kwin bindings and fix stuff 2025-02-01 23:40:16 -05:00
cy
81e06a0513
install plasma and use plasma-manager to configure 2025-02-01 22:36:56 -05:00
cy
258cce19fb
flake update
Signed-off-by: cy <cy@cy7.sh>
2025-02-01 12:10:21 -05:00
cy
3510da9657
install ida-free 2025-02-01 12:08:57 -05:00
cy
95ff04af25
nix-ld to make binaryninja work 2025-01-31 23:44:15 -05:00
cy
a31dbdaf0f
don't overlay cutter
Signed-off-by: cy <cy@cy7.sh>
2025-01-31 21:59:30 -05:00
cy
1c449848e2
overlay cutter
Signed-off-by: cy <cy@cy7.sh>
2025-01-31 14:30:29 -05:00
cy
30c82dcb4f
add sccache, some vscode changes, use kitten ssh 2025-01-30 12:48:48 -05:00
cy
d0ba9ca90b
make garage better
Signed-off-by: cy <cy@cy7.sh>
2025-01-30 12:35:19 -05:00
cy
4e0c1fbbb4
caddy: use acme_dns for wildcard TLS to work
use cloudflare dns plugin to update zone
2025-01-30 12:33:03 -05:00
cy
4f015ecb45
vscode: overlay github codespaces extension
Signed-off-by: cy <cy@cy7.sh>
2025-01-29 21:48:31 -05:00
cy
67048909a9
flake update
Signed-off-by: cy <cy@cy7.sh>
2025-01-29 16:49:19 -05:00
cy
b07c255869
nix fmt and some cleanup
Signed-off-by: cy <cy@cy7.sh>
2025-01-29 16:48:28 -05:00
cy
069a65d4c7
nixvim: add copilot stuff 2025-01-29 16:23:33 -05:00
cy
b2a6740256
vscode goodies
Signed-off-by: cy <cy@cy7.sh>
2025-01-29 15:24:42 -05:00
cy
d79a34328a
flake update
Signed-off-by: cy <cy@cy7.sh>
2025-01-28 22:40:30 -05:00
cy
0506c6c92f
install ghidra and disable mouse warp
Signed-off-by: cy <cy@cy7.sh>
2025-01-28 22:38:40 -05:00
cy
1e55f3901c
fix matrix
Signed-off-by: cy <cy@cy7.sh>
2025-01-28 22:38:24 -05:00
cy
f9837b7cab
make treesitter nicer
Signed-off-by: cy <cy@cy7.sh>
2025-01-28 00:39:23 -05:00
cy
443ea96d1f
make justfile better and cleanup zsh
Signed-off-by: cy <cy@cy7.sh>
2025-01-27 20:26:16 -05:00
cy
da557a7b7e
titan: redirect to new website
Signed-off-by: cy <cy@cy7.sh>
2025-01-27 20:07:41 -05:00
cy
cad577b193
migrate chunk to caddy module
Signed-off-by: cy <cy@cy7.sh>
2025-01-27 05:50:25 -05:00
cy
a9a3ee8413
init
Signed-off-by: cy <cy@cy7.sh>
2025-01-27 04:02:11 -05:00
cy
61b1399131
enable ssh agent
Signed-off-by: cy <cy@cy7.sh>
2025-01-27 02:28:39 -05:00
cy
7367b2d1a5
flake update
Signed-off-by: cy <cy@cy7.sh>
2025-01-26 22:35:43 -05:00
cy
b1a1955786
make mouse cursor better again
Signed-off-by: cy <cy@cy7.sh>
2025-01-26 17:43:18 -05:00
cy
80da2cfc70
git: specify the ssh key for push to work
Signed-off-by: cy <cy@cy7.sh>
2025-01-26 17:23:35 -05:00
cy
84c2b18dfa re-enable lix
Signed-off-by: cy <cy@cy7.sh>
2025-01-26 01:32:41 -05:00
cy
7b48435796
git sign with ssh
Signed-off-by: cy <cy@cy7.sh>
2025-01-25 23:55:24 -05:00
cy
6ae187f7c6 forgejo: use forgejo package and forgejo-dark theme
Signed-off-by: cy <cy@cy7.sh>
2025-01-25 19:47:39 -05:00
cy
5fc61d955b flake update
Signed-off-by: cy <cy@cy7.sh>
2025-01-25 17:24:02 -05:00
cy
c6f24e39c1 Merge branch 'update' 2025-01-25 10:34:52 -05:00
cy
ca047c1885 add beta nix cache
Signed-off-by: cy <cy@cy7.sh>
2025-01-25 09:47:52 -05:00
cy
42e66561b7 flake update
Signed-off-by: cy <cy@cy7.sh>
2025-01-25 09:13:58 -05:00
cy
750b202a42 flake update
Signed-off-by: cy <cy@cy7.sh>
2025-01-24 22:41:26 -05:00
cy
5e3715f8f7 make justfile work 2025-01-24 15:33:52 -05:00
cy
c1cb989017 flake update
Signed-off-by: cy <cy@cy7.sh>
2025-01-24 13:34:49 -05:00
cy
4fa0aed92e git enable signoff and change mergetool
Signed-off-by: cy <cy@cy7.sh>
2025-01-24 05:58:02 -05:00
cy
947249cc79 configure tailscale and stuff 2025-01-24 01:14:26 -05:00
cy
76b0dd1a4e init none-ls and justfile 2025-01-23 22:16:34 -05:00
cy
caa3b8d081 lix broke 2025-01-23 21:18:36 -05:00
cy
dd15bcb9ab flake update 2025-01-23 20:24:26 -05:00
cy
9de0b072cd make kitty TERM work on other computers 2025-01-23 01:32:22 -05:00
cy
6da74e745e define flake registry 2025-01-22 18:53:05 -05:00
cy
a29326adf1 nvim: fix fzf 2025-01-22 18:52:53 -05:00
cy
e51f883626 niri stuff; remove hosts module 2025-01-22 18:52:34 -05:00
cy
9b0c02deb9 ugprade lix to patch cache 404 bug 2025-01-22 16:28:33 -05:00
cy
0ca62b620a flake update 2025-01-22 15:46:01 -05:00
cy
62e29061db add lix input 2025-01-22 14:51:00 -05:00
cy
df3469c708 apparently that option doesn't exist anymore 2025-01-22 13:37:38 -05:00
cy
f9cc197be2 deduplicate flake inputs 2025-01-22 04:33:51 -05:00
cy
7cf2d318c6 nix fmt 2025-01-22 03:08:18 -05:00
cy
67fd47275d cachix donesnt accept-flake-config by default 2025-01-22 03:06:58 -05:00
cy
7bd2af2396 use cachix action to install latest nix 2025-01-22 02:45:29 -05:00
cy
f9806ac636 try lix 2025-01-22 02:07:37 -05:00
cy
b8dcdac94b remove ghostty input and flake update 2025-01-22 00:51:17 -05:00
cy
e9e20c15a6 kitty: scrollback pager stuff 2025-01-21 23:27:33 -05:00
cy
412e22c424 Merge branch 'conduwuit-flake' 2025-01-21 23:04:19 -05:00
cy
2622119933 just making then nicer 2025-01-21 21:59:59 -05:00
cy
0f913101a9 use conduwuit from flake 2025-01-21 21:56:26 -05:00
cy
cfa298fb63 fix kde apps looking weird 2025-01-21 16:47:47 -05:00
cy
0d8ec05ba6 how about kitty now 2025-01-21 16:24:33 -05:00
cy
03e1a832ff some irssi config 2025-01-21 15:36:19 -05:00
cy
455b197b7f try to fix cursor issue 2025-01-21 13:35:44 -05:00
cy
aca309a9c0 ghostty: init 2025-01-21 13:16:03 -05:00
cy
6a2269f591 add irssi 2025-01-21 12:07:49 -05:00
cy
bbcc1433de nix fmt 2025-01-21 04:25:30 -05:00
cy
ae71a8a779 add garnix and cachix cache 2025-01-21 04:22:58 -05:00
cy
4ceb7f7830 add garnix.yaml 2025-01-21 04:05:32 -05:00
cy
0c6b96bc8e Merge branch 'zen' 2025-01-21 04:04:36 -05:00
cy
2c2d5a4103 niri doesnt start if DISPLAY is set before 2025-01-21 04:04:32 -05:00
cy
38b90fd28e overlay zen 2025-01-21 04:04:08 -05:00
cy
40addb8f90 try zen kernel 2025-01-21 01:39:52 -05:00
cy
3a415ccce9 downgrade kernel to 6.12 2025-01-20 23:36:54 -05:00
cy
21fdf27b6c use input to build packages 2025-01-20 21:01:20 -05:00
cy
222fc45918 flake update 2025-01-20 20:51:57 -05:00
cy
0cc8d4195f some niri changes 2025-01-20 20:50:51 -05:00
cy
d29d23c3e8 unbreak element 2025-01-20 20:50:13 -05:00
cy
240d8b2820 add lact package 2025-01-20 20:12:33 -05:00
cy
b2582a051d also run workflow on PR 2025-01-20 13:37:18 -05:00
cy
e78bda179e move packages to a separate workflow 2025-01-20 13:37:18 -05:00
cy
1d7b20d51d use more specific primary-key and prefix-match 2025-01-20 13:37:18 -05:00
cy
3a621723d1 revamp workflow (cy/infra#4)
Reviewed-on: cy/infra#4
Co-authored-by: cy <cy@cy7.sh>
Co-committed-by: cy <cy@cy7.sh>
2025-01-20 02:59:35 -05:00
cy
d7f51613fd forgejo: enable repo indexer 2025-01-20 02:36:22 -05:00
cy
833a228870 use -L flag 2025-01-20 01:22:36 -05:00
cy
9afffbeac3 Merge pull request 'bump conduwuit' (#3) from bump-conduwuit into main
Reviewed-on: cy/infra#3
2025-01-20 00:53:13 -05:00
cy
6697a8400b use oxalica/rust-overlay to build conduwuit 2025-01-20 00:28:02 -05:00
cy
b01a3fd472 bump conduwuit and remove the patch 2025-01-19 22:35:21 -05:00
cy
3dd119d3d7 niri disable focus follows mouse 2025-01-19 22:27:14 -05:00
cy
71be5f3545 fmt 2025-01-19 21:45:11 -05:00
cy
bb0da64219 root should own /nix before we install nix 2025-01-19 21:30:43 -05:00
cy
f8018ab702 overprovision lvm and mount to /nix 2025-01-19 21:30:43 -05:00
cy
ec4e66c91a can we get more space 2025-01-19 21:30:43 -05:00
cy
36a8df7aa1 try lanzaboote from master 2025-01-19 21:30:43 -05:00
cy
5933a15cd8 set display variable 2025-01-19 21:30:43 -05:00
cy
32e8d70d6f how about homes 2025-01-19 21:30:43 -05:00
cy
a53a985158 can we build machines 2025-01-19 21:30:43 -05:00
cy
5b163a2721 refine window rules 2025-01-19 12:46:46 -05:00
cy
02c356ec51 flake update and add nix-community cache 2025-01-19 03:59:33 -05:00
cy
d07194c5cb make waybar work with niri 2025-01-19 03:54:37 -05:00
cy
91c728799b more key bindings and rules 2025-01-19 03:08:04 -05:00
cy
929c98faf5 make xwayland work 2025-01-19 01:20:01 -05:00
cy
973993af60 make mouse script work and add window rules 2025-01-19 01:07:47 -05:00
cy
afc2e8ea66 make fuzzel wider 2025-01-19 00:23:46 -05:00
cy
f26cc9575d switch to niri 2025-01-19 00:15:12 -05:00
cy
e7b6fda857 make wallpaper work on niri 2025-01-18 23:10:45 -05:00
cy
4b28b21068 nix fmt 2025-01-18 21:39:24 -05:00
cy
fd8db4c006 init niri 2025-01-18 21:11:03 -05:00
cy
f2f8c204ee make workflow better 2025-01-18 19:26:21 -05:00
cy
07fcbcb567 replace build list with placeholder 2025-01-18 03:10:53 -05:00
cy
784df6404f workflow continue-on-error 2025-01-18 01:24:30 -05:00
cy
91bdd3e273 also test builds on mac 2025-01-18 01:20:39 -05:00
cy
4d739520aa building overlay stuff broke 2025-01-18 00:24:52 -05:00
cy
12885fa92a flake update 2025-01-17 21:46:49 -05:00
cy
0ebc1a3836 move rss to cy7.sh 2025-01-17 16:19:20 -05:00
cy
2aa7fa8a47 fix nil_ls 2025-01-16 23:30:38 -05:00
cy
91f1a9b552 make it nicer 2025-01-16 18:48:33 -05:00
cy
64cb83cddb bring back treefmt
rm git-hooks
2025-01-16 16:56:31 -05:00
cy
acb4987357 flake update and bring back overlays 2025-01-16 16:34:18 -05:00
cy
193fc258b9 make things work with flake-parts
also don't use my fork for btrbk anymore
2025-01-16 16:11:24 -05:00
cy
ff3df36198 nvim undotree and direnv 2025-01-16 11:01:55 -05:00
github-actions[bot]
09b6e25b2b
flake.lock: Update (#23)
Flake lock file updates:

• Updated input 'disko':
    'github:nix-community/disko/65a441502c9382d41ada1adbc9bd31d6c9b00fe2?narHash=sha256-snPBgTqwn3FPZVdFC5yt7Bnk3squim1vZOZ8CObWykk%3D' (2024-12-13)
  → 'github:nix-community/disko/0141aabed359f063de7413f80d906e1d98c0c123?narHash=sha256-ItkIZyebGvNH2dK9jVGzJHGPtb6BSWLN8Gmef16NeY0%3D' (2025-01-14)
• Updated input 'nixpkgs':
    'github:nixos/nixpkgs/ba9f7942037ac78a690eb7e2c15f4869c9515eb4?narHash=sha256-YKr7RhOtFFl7metHJ2oWmPF5//mlvasFr1jJ0gLdNyQ%3D' (2025-01-13)
  → 'github:nixos/nixpkgs/69b5cebd7cc197ee5885fa694465039c42a5c8dc?narHash=sha256-j9ysmoP7UJUEZdA1/Gjqa8zsx5gaq35PxRsaTBwgoWk%3D' (2025-01-15)
• Updated input 'nixpkgs-garage':
    'github:cything/nixpkgs/616be0a7b830a10d0874d569aabd40034c9151aa?narHash=sha256-KpbFF8d5cqcBF7%2Bm5fXDcPn%2BADg3kURbX49JGx18NXU%3D' (2025-01-12)
  → 'github:cything/nixpkgs/97f27249297bf5fbc563014ae9d4884dee27f1e0?narHash=sha256-A7knAvBOwoM5X7oNdIOKvuXYtXJpuR4O8iKHIk8EwOI%3D' (2025-01-15)
• Updated input 'nixvim':
    'github:nix-community/nixvim/a54b752259ff16d340d270928ee603b4b9599192?narHash=sha256-dXvzw4LmupgZb2VfwclzygiIyfqjnmKhTdjHDun2rDg%3D' (2025-01-13)
  → 'github:nix-community/nixvim/5b068e7f8f2b6beaa1fafe0c8b3604b63bcccc2d?narHash=sha256-gb3ujURRlI/D5Jc8PUDOpJr8RyrTwnDDIDtnQK4upso%3D' (2025-01-15)

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-01-15 22:47:18 -05:00
cy
f327c0628a add codespace home 2025-01-14 10:50:19 -05:00
cy
d35639285f change forgejo landing page to explore
update git email
don't include vscode in common
2025-01-14 10:28:29 -05:00
cy
22f42ec745 make vim nicer 2025-01-14 00:01:37 -05:00
cy
66101edde5 swap scroll doc keys 2025-01-13 20:09:51 -05:00
cy
a8ce6936a7 use unstable-small 2025-01-13 20:09:39 -05:00
cy
5b27c6e0dc flake update 2025-01-13 19:17:14 -05:00
cy
8c8d0fbb56 some nvim and vscode changes 2025-01-13 15:13:10 -05:00
cy
88e38e36ec Merge branch 'vscode' 2025-01-13 15:03:29 -05:00
cy
b6c18ce5f2 nix fmt 2025-01-13 01:17:13 -05:00
cy
62d2b13910 rm old overlays and make sway float anki add window 2025-01-13 00:46:41 -05:00
github-actions[bot]
6c7c412533 flake.lock: Update
Flake lock file updates:

• Updated input 'home-manager':
    'github:nix-community/home-manager/7e00856596891850ba5ad4c5ecd2ed74468c08c5?narHash=sha256-Fo68EF6p/N9GJyHiAUbXtiE7IJlb3IMjK86LuxFMsRU%3D' (2025-01-08)
  → 'github:nix-community/home-manager/2532b500c3ed2b8940e831039dcec5a5ea093afc?narHash=sha256-ZOaGwa%2BWnB7Zn3YXimqjmIugAnHePdXCmNu%2BAHkq808%3D' (2025-01-10)
• Updated input 'nixpkgs':
    'github:nixos/nixpkgs/8f3e1f807051e32d8c95cd12b9b421623850a34d?narHash=sha256-/qlNWm/IEVVH7GfgAIyP6EsVZI6zjAx1cV5zNyrs%2BrI%3D' (2025-01-04)
  → 'github:nixos/nixpkgs/130595eba61081acde9001f43de3248d8888ac4a?narHash=sha256-Xb8mke6UCYjge9kPR9o4P1nVrhk7QBbKv3xQ9cj7h2s%3D' (2025-01-10)
• Updated input 'nixpkgs-garage':
    'github:cything/nixpkgs/9a35d495d2f49eee003b57265228844bb48c933e?narHash=sha256-Y/r6cOYW4UsFj55gp0FTdxDmrrccn6wXQo/zll2Yx8g%3D' (2025-01-12)
  → 'github:cything/nixpkgs/616be0a7b830a10d0874d569aabd40034c9151aa?narHash=sha256-KpbFF8d5cqcBF7%2Bm5fXDcPn%2BADg3kURbX49JGx18NXU%3D' (2025-01-12)
• Updated input 'nixvim':
    'github:nix-community/nixvim/67de84848e43ca6a5025e4f8eddc2f6684a51f2b?narHash=sha256-0dabFSGqcPo47WfgPRM5usnVXaGMdYvPlDJ5PeIqjr4%3D' (2025-01-09)
  → 'github:nix-community/nixvim/35d6c12626f9895cd5d8ccf5d19c3d00de394334?narHash=sha256-5YAiZ3wrEJ/fzFoCwNf14xqfRTvgdcnl/%2By0vye3Y6A%3D' (2025-01-12)
• Updated input 'nixvim/home-manager':
    'github:nix-community/home-manager/7e00856596891850ba5ad4c5ecd2ed74468c08c5?narHash=sha256-Fo68EF6p/N9GJyHiAUbXtiE7IJlb3IMjK86LuxFMsRU%3D' (2025-01-08)
  → 'github:nix-community/home-manager/2532b500c3ed2b8940e831039dcec5a5ea093afc?narHash=sha256-ZOaGwa%2BWnB7Zn3YXimqjmIugAnHePdXCmNu%2BAHkq808%3D' (2025-01-10)
• Updated input 'sops-nix':
    'github:Mic92/sops-nix/c9c88f08e3ee495e888b8d7c8624a0b2519cb773?narHash=sha256-eSjkBwBdQk%2BTZWFlLbclF2rAh4JxbGg8az4w/Lfe7f4%3D' (2025-01-06)
  → 'github:Mic92/sops-nix/f214c1b76c347a4e9c8fb68c73d4293a6820d125?narHash=sha256-4P99yL8vGehwzytkpP87eklBePt6aqeEC5JFsIzhfUs%3D' (2025-01-10)
2025-01-13 00:45:46 -05:00
cy
40bc68df75 bump garage and test 2025-01-11 23:47:42 -05:00
cy
2bdfb3e1a2 bring back garage (#1)
make it work with my fork

Reviewed-on: cy/infra#1
2025-01-11 23:18:22 -05:00
cy
0dd68a7d25 nixvim dont remap gt 2025-01-11 22:50:00 -05:00
cy
e7f01b5ba0 build nil_ls 2025-01-11 19:56:52 -05:00
cy
d5b6ec3daf init 2025-01-11 18:53:55 -05:00
cy
4099e9dce4 give nixvim to chunk 2025-01-11 18:27:04 -05:00
cy
4a8eecbd56 install github-cli 2025-01-11 18:26:41 -05:00
58 changed files with 2507 additions and 595 deletions

View file

@ -1,31 +0,0 @@
name: build and cache random stuff
on:
workflow_dispatch:
push:
jobs:
build:
strategy:
matrix:
package:
- .#attic-client
- .#attic-server
- .#eza
- .#conduwuit
runs-on: ubuntu-latest
steps:
- uses: DeterminateSystems/nix-installer-action@main
with:
logger: pretty
- uses: DeterminateSystems/magic-nix-cache-action@main
- uses: cachix/cachix-action@v15
with:
name: cything
authToken: "${{ secrets.CACHIX_AUTH_TOKEN }}"
- name: Setup Attic cache
uses: ryanccn/attic-action@v0
with:
endpoint: ${{ vars.ATTIC_ENDPOINT }}
cache: ${{ vars.ATTIC_CACHE }}
token: ${{ secrets.ATTIC_TOKEN }}
- uses: actions/checkout@v4
- run: nix build '${{ matrix.package }}'

View file

@ -0,0 +1,126 @@
name: build and cache machines and homes
on:
workflow_dispatch:
push:
pull_request:
jobs:
build-machines:
strategy:
matrix:
machine:
- chunk
- ytnix
- titan
os:
- ubuntu-latest
runs-on: ${{ matrix.os }}
continue-on-error: true
steps:
- name: Maximize build disk space
uses: easimon/maximize-build-space@v10
with:
overprovision-lvm: true
swap-size-mb: 1024
remove-dotnet: 'true'
remove-android: 'true'
remove-haskell: 'true'
remove-codeql: 'true'
remove-docker-images: 'true'
build-mount-path: /nix
- name: Install Nix
uses: cachix/install-nix-action@v30
with:
install_url: https://releases.nixos.org/nix/nix-2.25.4/install
extra_nix_config: 'accept-flake-config = true'
- name: Sync repository
uses: actions/checkout@v4
with:
persist-credentials: false
- uses: cachix/cachix-action@v14
with:
name: cything
authToken: '${{ secrets.CACHIX_AUTH_TOKEN }}'
useDaemon: false
installCommand: nix profile install nixpkgs#cachix
- name: Setup Attic cache
uses: ryanccn/attic-action@v0
with:
endpoint: ${{ vars.ATTIC_ENDPOINT }}
cache: ${{ vars.ATTIC_CACHE }}
token: ${{ secrets.ATTIC_TOKEN }}
- name: Restore and cache Nix store
uses: nix-community/cache-nix-action@v5.1.0
with:
# restore and save a cache using this key
primary-key: nix-${{ runner.os }}-${{ matrix.machine }}-${{ hashFiles('**/*.nix', 'flake.lock') }}
# if there's no cache hit, restore a cache by this prefix
restore-prefixes-first-match: nix-${{ runner.os }}-${{ matrix.machine }}-
# do purge caches
purge: true
# purge all versions of the cache
purge-prefixes: nix-${{ runner.os }}-
# created more than this number of seconds ago relative to the start of the `Post Restore` phase
purge-last-accessed: 86400
# except the version with the `primary-key`, if it exists
purge-primary-key: never
# always save the cache
save-always: true
- run: nix build -L .#nixosConfigurations.${{ matrix.machine }}.config.system.build.toplevel
build-homes:
strategy:
matrix:
home:
- yt@ytnix
- yt@chunk
os:
- ubuntu-latest
# - macos-latest
runs-on: ${{ matrix.os }}
continue-on-error: true
steps:
- name: Maximize build disk space
uses: easimon/maximize-build-space@v10
with:
overprovision-lvm: true
swap-size-mb: 1024
remove-dotnet: 'true'
remove-android: 'true'
remove-haskell: 'true'
remove-codeql: 'true'
remove-docker-images: 'true'
build-mount-path: /nix
- uses: nixbuild/nix-quick-install-action@master
- name: Sync repository
uses: actions/checkout@v4
with:
persist-credentials: false
- uses: cachix/cachix-action@v14
with:
name: cything
authToken: '${{ secrets.CACHIX_AUTH_TOKEN }}'
useDaemon: false
installCommand: nix profile install nixpkgs#cachix
- name: Setup Attic cache
uses: ryanccn/attic-action@v0
with:
endpoint: ${{ vars.ATTIC_ENDPOINT }}
cache: ${{ vars.ATTIC_CACHE }}
token: ${{ secrets.ATTIC_TOKEN }}
- name: Restore and cache Nix store
uses: nix-community/cache-nix-action@v5.1.0
with:
# restore and save a cache using this key
primary-key: nix-${{ runner.os }}-${{ matrix.home }}-${{ hashFiles('**/*.nix', 'flake.lock') }}
# if there's no cache hit, restore a cache by this prefix
restore-prefixes-first-match: nix-${{ runner.os }}-${{ matrix.home }}-
# do purge caches
purge: true
# purge all versions of the cache
purge-prefixes: nix-${{ runner.os }}-
# created more than this number of seconds ago relative to the start of the `Post Restore` phase
purge-last-accessed: 86400
# except the version with the `primary-key`, if it exists
purge-primary-key: never
# always save the cache
save-always: true
- run: nix build -L .#homeConfigurations."${{ matrix.home }}".activationPackage

59
.github/workflows/build-packages.yml vendored Normal file
View file

@ -0,0 +1,59 @@
name: build and cache packages
on:
workflow_dispatch:
inputs:
package:
description: "package to build"
required: false
type: string
jobs:
build-packages:
strategy:
matrix:
package:
- github:cything/nixpkgs/928e0c6874ab3e759305e93f806a4cf559645677#alvr
- github:cything/nixpkgs/8929e1256ceec677dd57fce405cdaca23176399b#lact
- ${{ inputs.package }}
os:
- ubuntu-latest
- macos-latest
- ubuntu-24.04-arm
runs-on: ${{ matrix.os }}
continue-on-error: true
steps:
- name: Install Nix
uses: cachix/install-nix-action@v30
- name: Sync repository
uses: actions/checkout@v4
with:
persist-credentials: false
- uses: cachix/cachix-action@v14
with:
name: cything
authToken: '${{ secrets.CACHIX_AUTH_TOKEN }}'
useDaemon: false
installCommand: nix profile install nixpkgs#cachix
- name: Setup Attic cache
uses: ryanccn/attic-action@v0
with:
endpoint: ${{ vars.ATTIC_ENDPOINT }}
cache: ${{ vars.ATTIC_CACHE }}
token: ${{ secrets.ATTIC_TOKEN }}
- name: Restore and cache Nix store
uses: nix-community/cache-nix-action@v5.1.0
with:
# restore and save a cache using this key
primary-key: nix-${{ runner.os }}-${{ matrix.package }}-${{ hashFiles('**/*.nix', 'flake.lock') }}
# if there's no cache hit, restore a cache by this prefix
restore-prefixes-first-match: nix-${{ runner.os }}-${{ matrix.package }}-
# do purge caches
purge: true
# purge all versions of the cache
purge-prefixes: nix-${{ runner.os }}-
# created more than this number of seconds ago relative to the start of the `Post Restore` phase
purge-last-accessed: 86400
# except the version with the `primary-key`, if it exists
purge-primary-key: never
# always save the cache
save-always: true
- run: nix build -L ${{ matrix.package }}

View file

@ -98,3 +98,18 @@ creation_rules:
- age: - age:
- *chunk - *chunk
- *cy - *cy
- path_regex: secrets/services/garage.yaml
key_groups:
- age:
- *chunk
- *cy
- path_regex: secrets/services/tailscale.yaml
key_groups:
- age:
- *chunk
- *cy
- path_regex: secrets/yt/(.*).yaml$
key_groups:
- age:
- *yt
- *cy

1047
flake.lock generated

File diff suppressed because it is too large Load diff

222
flake.nix
View file

@ -2,7 +2,7 @@
description = "cy's flake"; description = "cy's flake";
inputs = { inputs = {
nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable"; nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable-small";
sops-nix = { sops-nix = {
url = "github:Mic92/sops-nix"; url = "github:Mic92/sops-nix";
inputs.nixpkgs.follows = "nixpkgs"; inputs.nixpkgs.follows = "nixpkgs";
@ -20,29 +20,92 @@
inputs.nixpkgs.follows = "nixpkgs"; inputs.nixpkgs.follows = "nixpkgs";
}; };
lanzaboote = { lanzaboote = {
url = "github:nix-community/lanzaboote/v0.4.1"; url = "github:nix-community/lanzaboote/master";
inputs.nixpkgs.follows = "nixpkgs"; inputs.nixpkgs.follows = "nixpkgs";
inputs.crane.follows = "crane";
inputs.flake-compat.follows = "flake-compat";
inputs.flake-parts.follows = "flake-parts";
inputs.rust-overlay.follows = "rust-overlay";
}; };
nixvim = { nixvim = {
url = "github:nix-community/nixvim"; url = "github:nix-community/nixvim";
inputs.nixpkgs.follows = "nixpkgs"; inputs.nixpkgs.follows = "nixpkgs";
inputs.flake-parts.follows = "flake-parts";
inputs.flake-compat.follows = "flake-compat";
inputs.home-manager.follows = "home-manager";
inputs.treefmt-nix.follows = "treefmt";
};
flake-parts = {
url = "github:hercules-ci/flake-parts";
inputs.nixpkgs-lib.follows = "nixpkgs";
};
niri = {
url = "github:sodiboo/niri-flake";
inputs.nixpkgs.follows = "nixpkgs";
inputs.nixpkgs-stable.follows = "nixpkgs";
};
rust-overlay = {
url = "github:oxalica/rust-overlay";
inputs.nixpkgs.follows = "nixpkgs";
};
conduwuit = {
url = "github:girlbossceo/conduwuit";
inputs = {
nixpkgs.follows = "nixpkgs";
crane.follows = "crane";
flake-compat.follows = "flake-compat";
flake-utils.follows = "flake-utils";
};
};
lix-module = {
url = "git+https://git.lix.systems/lix-project/nixos-module";
inputs.nixpkgs.follows = "nixpkgs";
inputs.flake-utils.follows = "flake-utils";
inputs.lix.follows = "lix";
};
lix = {
url = "git+https://git.lix.systems/lix-project/lix";
inputs.nixpkgs.follows = "nixpkgs";
inputs.flake-compat.follows = "flake-compat";
};
nix-ld = {
url = "github:nix-community/nix-ld";
inputs.nixpkgs.follows = "nixpkgs";
};
plasma-manager = {
url = "github:nix-community/plasma-manager";
inputs.nixpkgs.follows = "nixpkgs";
inputs.home-manager.follows = "home-manager";
}; };
nixpkgs-borg.url = "github:cything/nixpkgs/borg"; # unmerged PR nixpkgs-garage.url = "github:cything/nixpkgs/garage-module"; # unmerged PR
nixpkgs-btrbk.url = "github:cything/nixpkgs/btrbk"; # unmerged PR
eza.url = "github:nixos/nixpkgs/d722e8ce81cf103280ce1ff65accb3fc25cbd2ba"; nvim-github-theme = {
url = "github:projekt0n/github-nvim-theme";
flake = false;
};
# deduplication
flake-utils.url = "github:numtide/flake-utils";
crane.url = "github:ipetkov/crane";
flake-compat.url = "github:edolstra/flake-compat";
}; };
nixConfig = { nixConfig = {
extra-substituters = [ extra-substituters = [
"https://cache.cything.io/central" "https://cache.cything.io/central"
"https://cache.cything.io/infra-ci" "https://niri.cachix.org"
"https://cache.cything.io/attic" "https://nix-community.cachix.org"
"https://cache.garnix.io"
"https://cything.cachix.org"
"https://aseipp-nix-cache.global.ssl.fastly.net"
]; ];
extra-trusted-public-keys = [ extra-trusted-public-keys = [
"central:uWhjva6m6dhC2hqNisjn2hXGvdGBs19vPkA1dPEuwFg=" "central:uWhjva6m6dhC2hqNisjn2hXGvdGBs19vPkA1dPEuwFg="
"infra-ci:xG5f5tddUBcvToYjlpHD5OY/puYQkKmgKeIQCshNs38=" "niri.cachix.org-1:Wv0OmO7PsuocRKzfDoJ3mulSl7Z6oezYhGhR+3W2964="
"attic:HL3hVpqXxwcF7Q1R+IvU2i0+YxIjQA2xxKM5EJMXLLs=" "nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs="
"cache.garnix.io:CTFPyKSLcx5RMJKfLo5EEPUObbA78b0YQ2DTCJXqr9g="
"cything.cachix.org-1:xqW1W5NNL+wrM9wfSELb0MLj/harD2ZyB4HbdaMyvPI="
]; ];
builders-use-substitutes = true; builders-use-substitutes = true;
}; };
@ -52,80 +115,60 @@
self, self,
nixpkgs, nixpkgs,
home-manager, home-manager,
treefmt,
disko, disko,
flake-parts,
... ...
}@inputs: }@inputs:
let flake-parts.lib.mkFlake { inherit inputs; } (
lib = nixpkgs.lib; { ... }:
inherit (self) outputs; {
imports = [
systems = [ "x86_64-linux" ]; inputs.treefmt.flakeModule
forEachSystem = f: lib.genAttrs systems (system: f pkgsFor.${system}); ];
debug = true;
overridePkgsFromFlake = systems = [
pkgs: flake: pkgNames: "x86_64-linux"
let ];
pkgs' = import flake { inherit (pkgs) system config; }; perSystem =
pkgNames' = builtins.map (lib.splitString ".") pkgNames; {
pkgVals = builtins.map ( inputs',
path: ...
let }:
package = lib.getAttrFromPath path pkgs'; {
in treefmt = {
lib.setAttrByPath path package
) pkgNames';
in
lib.foldl' lib.recursiveUpdate { } pkgVals;
overlayPkgsFromFlake =
flake: pkgNames: _final: prev:
overridePkgsFromFlake prev flake pkgNames;
overlays = [
(overlayPkgsFromFlake inputs.eza [
"eza"
])
] ++ import ./overlay;
pkgsFor = lib.genAttrs systems (
system:
import nixpkgs {
inherit system overlays;
config = {
allowUnfree = true;
};
}
);
treefmtEval = forEachSystem (
pkgs:
treefmt.lib.evalModule pkgs {
projectRootFile = "flake.nix"; projectRootFile = "flake.nix";
programs.nixfmt.enable = true; programs.nixfmt.enable = true;
programs.stylua.enable = true; programs.stylua.enable = true;
programs.yamlfmt.enable = true; programs.yamlfmt.enable = true;
programs.typos.enable = true; programs.typos.enable = true;
programs.shellcheck.enable = true; programs.shellcheck.enable = true;
programs.deadnix.enable = true;
settings.global.excludes = [ "secrets/*" ]; settings.global.excludes = [
} "secrets/*"
); "**/*.png" # tries to format a png file
];
};
};
flake =
let
pkgs = import nixpkgs {
config.allowUnfree = true;
system = "x86_64-linux";
overlays = [
inputs.niri.overlays.niri
inputs.rust-overlay.overlays.default
] ++ import ./overlay;
};
in in
{ {
formatter = forEachSystem (pkgs: treefmtEval.${pkgs.system}.config.build.wrapper);
checks = forEachSystem (pkgs: {
formatting = treefmtEval.${pkgs.system}.config.build.check self;
});
# lets us build overlaid packages with `nix build .#<package>`
packages = pkgsFor;
nixosConfigurations = nixosConfigurations =
let let
pkgs = pkgsFor.x86_64-linux; lib = nixpkgs.lib;
in in
{ {
ytnix = lib.nixosSystem { ytnix = lib.nixosSystem {
specialArgs = { inherit inputs outputs; }; specialArgs = { inherit inputs; };
modules = [ modules = [
{ {
nixpkgs = { inherit pkgs; }; nixpkgs = { inherit pkgs; };
@ -134,23 +177,29 @@
inputs.sops-nix.nixosModules.sops inputs.sops-nix.nixosModules.sops
./modules ./modules
inputs.lanzaboote.nixosModules.lanzaboote inputs.lanzaboote.nixosModules.lanzaboote
inputs.niri.nixosModules.niri
inputs.lix-module.nixosModules.default
inputs.nix-ld.nixosModules.nix-ld
]; ];
}; };
chunk = lib.nixosSystem { chunk = lib.nixosSystem {
specialArgs = { inherit inputs outputs; }; specialArgs = { inherit inputs; };
modules = [ modules = [
{ {
nixpkgs = { inherit pkgs; }; nixpkgs = { inherit pkgs; };
disabledModules = [
"services/web-servers/garage.nix"
];
} }
./hosts/chunk ./hosts/chunk
inputs.sops-nix.nixosModules.sops inputs.sops-nix.nixosModules.sops
./modules ./modules
(inputs.nixpkgs-garage + "/nixos/modules/services/web-servers/garage.nix")
]; ];
}; };
titan = lib.nixosSystem { titan = lib.nixosSystem {
specialArgs = { inherit inputs outputs; }; specialArgs = { inherit inputs; };
modules = [ modules = [
{ {
nixpkgs = { inherit pkgs; }; nixpkgs = { inherit pkgs; };
@ -162,24 +211,41 @@
]; ];
}; };
}; };
homeConfigurations =
homeConfigurations = { let
"yt@ytnix" = home-manager.lib.homeManagerConfiguration { lib = home-manager.lib;
pkgs = pkgsFor.x86_64-linux; in
extraSpecialArgs = { inherit inputs outputs; }; {
"yt@ytnix" = lib.homeManagerConfiguration {
inherit pkgs;
extraSpecialArgs = { inherit inputs; };
modules = [ modules = [
./home/yt/ytnix.nix ./home/yt/ytnix.nix
inputs.nixvim.homeManagerModules.nixvim inputs.nixvim.homeManagerModules.nixvim
inputs.niri.homeModules.config
inputs.plasma-manager.homeManagerModules.plasma-manager
];
};
"yt@chunk" = lib.homeManagerConfiguration {
inherit pkgs;
extraSpecialArgs = { inherit inputs; };
modules = [
./home/yt/chunk.nix
inputs.nixvim.homeManagerModules.nixvim
]; ];
}; };
"yt@chunk" = home-manager.lib.homeManagerConfiguration { "codespace@codespace" = lib.homeManagerConfiguration {
pkgs = pkgsFor.x86_64-linux; inherit pkgs;
extraSpecialArgs = { inherit inputs outputs; }; extraSpecialArgs = { inherit inputs; };
modules = [ modules = [
./home/yt/chunk.nix ./home/yt/codespace.nix
inputs.nixvim.homeManagerModules.nixvim
]; ];
}; };
}; };
}; };
} }
);
}

6
garnix.yaml Normal file
View file

@ -0,0 +1,6 @@
builds:
include:
- 'nixosConfigurations.*'
- 'homeConfigurations.*'
- '*.aarch64-linux.*'
- '*.x86_64-linux.*'

View file

@ -17,40 +17,32 @@
blink = "yes"; blink = "yes";
blink-rate = 500; blink-rate = 500;
beam-thickness = 1.5; beam-thickness = 1.5;
color = "161821 c6c8d1";
}; };
mouse = { mouse = {
hide-when-typing = "yes"; hide-when-typing = "yes";
}; };
colors = { colors = {
background = "161821";
foreground = "c6c8d1"; foreground = "c6c8d1";
background = "161821";
selection-background = "1e2132"; regular0 = "1e2132";
selection-foreground = "c6c8d1";
regular0 = "161821";
bright0 = "6b7089";
regular1 = "e27878"; regular1 = "e27878";
bright1 = "e98989";
regular2 = "b4be82"; regular2 = "b4be82";
bright2 = "c0ca8e";
regular3 = "e2a478"; regular3 = "e2a478";
bright3 = "e9b189";
regular4 = "84a0c6"; regular4 = "84a0c6";
bright4 = "91acd1";
regular5 = "a093c7"; regular5 = "a093c7";
bright5 = "ada0d3";
regular6 = "89b8c2"; regular6 = "89b8c2";
bright6 = "95c4ce";
regular7 = "c6c8d1"; regular7 = "c6c8d1";
bright0 = "6b7089";
bright1 = "e98989";
bright2 = "c0ca8e";
bright3 = "e9b189";
bright4 = "91acd1";
bright5 = "ada0d3";
bright6 = "95c4ce";
bright7 = "d2d4de"; bright7 = "d2d4de";
selection-foreground = "161821";
selection-background = "c6c8d1";
}; };
key-bindings = { key-bindings = {

20
home/ghostty.nix Normal file
View file

@ -0,0 +1,20 @@
{ ... }:
{
programs.ghostty = {
enable = true;
enableZshIntegration = true;
clearDefaultKeybinds = true;
settings = {
theme = "iceberg-dark";
font-family = "IBM Plex Mono";
font-size = "12";
window-decoration = false;
confirm-close-surface = false;
keybind = [
"ctrl+q=quit"
"ctrl+shift+c=copy_to_clipboard"
"ctrl+shift+v=paste_from_clipboard"
];
};
};
}

22
home/irssi.nix Normal file
View file

@ -0,0 +1,22 @@
{ ... }:
{
programs.irssi = {
enable = true;
networks.liberachat = {
nick = "cy7";
server = {
address = "irc.libera.chat";
port = 6697;
autoConnect = true;
};
channels = {
nixos.autoJoin = true;
linux.autoJoin = true;
rust.autoJoin = true;
};
};
extraConfig = ''
ignores = ( { level = "JOINS PARTS QUITS MODES NICKS"; } )
'';
};
}

72
home/kitty.nix Normal file
View file

@ -0,0 +1,72 @@
{ pkgs, ... }:
{
programs.kitty = {
enable = true;
font = {
name = "IBM Plex Mono";
package = pkgs.ibm-plex;
size = 12;
};
themeFile = "GitHub_Dark";
settings = {
enable_audio_bell = true;
# how many windows should be open before kitty asks
# for confirmation
confirm_os_window_close = 0;
clear_all_shortcuts = true;
# will probably lower this later but the max allowed is actually 4GB
# this is NOT stored in memory and can only be viewed with scrollback_pager
"scrollback_pager_history_size" = "1024";
# see https://github.com/sharkdp/bat/issues/1077#issuecomment-652785399
"scrollback_pager" = "bat --pager='less -FR +G'";
"scrollback_lines" = 20000;
};
keybindings = {
# kitty_mod is ctrl+shift by default
"kitty_mod+c" = "copy_to_clipboard";
"kitty_mod+v" = "paste_from_clipboard";
# "ctrl+q" = "quit";
"kitty_mod+m" = "show_scrollback";
# windows
"kitty_mod+h" = "neighboring_window left";
"kitty_mod+alt+h" = "move_window left";
"kitty_mod+l" = "neighboring_window right";
"kitty_mod+alt+l" = "move_window right";
"kitty_mod+j" = "neighboring_window down";
"kitty_mod+alt+j" = "move_window down";
"kitty_mod+k" = "neighboring_window up";
"kitty_mod+alt+k" = "move_window up";
"ctrl+f3" = "detach_window new-tab";
"ctrl+f4" = "detach_window tab-left";
"ctrl+f5" = "load_config_file";
"ctrl+alt+l" = "next_layout";
"ctrl+alt+t" = "goto_layout tall";
"ctrl+alt+s" = "goto_layout stack";
"kitty_mod+enter" = "new_window_with_cwd";
"kitty_mod+r" = "resize_window";
# tabs
"kitty_mod+n" = "next_tab";
"kitty_mod+p" = "previous_tab";
"kitty_mod+alt+n" = "move_tab_forward";
"kitty_mod+alt+p" = "move_tab_backward";
"kitty_mod+w" = "close_tab";
"kitty_mod+t" = "new_tab_with_cwd";
"ctrl+f2" = "detach_tab";
# hints
# > basically means the preceding key is a prefix (think tmux)
"kitty_mod+o>o" = "open_url_with_hints";
"kitty_mod+o>p" = "kitten hints --type path --program -";
"kitty_mod+o>n" = "kitten hints --type line --program -";
"kitty_mod+o>w" = "kitten hints --type word --program -";
"kitty_mod+o>h" = "kitten hints --type hash --program -";
"kitty_mod+o>l" = "kitten hints --type linenum";
};
};
programs.zsh.shellAliases."ssh" = "kitten ssh";
}

210
home/niri/default.nix Normal file
View file

@ -0,0 +1,210 @@
{
config,
pkgs,
lib,
...
}:
let
wallpaper = "${./nixos-c-book.png}";
terminal = "kitty";
menu = [
"fuzzel"
"-w"
"100"
];
browser = "librewolf";
file-manager = "thunar";
clipboard = "cliphist list | ${lib.concatStringsSep " " menu} --dmenu | cliphist decode | wl-copy";
in
{
programs.niri.settings = {
prefer-no-csd = true;
input.keyboard.xkb.options = "ctrl:nocaps";
spawn-at-startup = [
{ command = [ "${lib.getExe pkgs.waybar}" ]; }
{
command = [
"${lib.getExe pkgs.swaybg}"
"-m"
"fill"
"-i"
wallpaper
];
}
{ command = [ "${lib.getExe pkgs.xwayland-satellite}" ]; }
{
command = [
"wl-paste"
"--watch"
"cliphist"
"store"
];
}
];
hotkey-overlay.skip-at-startup = true;
input = {
touchpad = {
tap = true;
dwt = true;
natural-scroll = true;
click-method = "clickfinger";
};
warp-mouse-to-focus = false;
focus-follows-mouse.enable = false;
};
environment = {
DISPLAY = ":0"; # for xwayland-satellite
ANKI_WAYLAND = "1";
};
layout = {
gaps = 0;
focus-ring = {
width = 4;
active.color = "#4c7899";
inactive.color = "#333333";
};
always-center-single-column = true;
border.enable = false;
};
window-rules = [
{
matches = [
{ app-id = "mpv"; }
{ app-id = "Bitwarden"; }
{
app-id = "ghidra-Ghidra";
# pop-up windows
title = "^win(.*)";
}
];
open-floating = true;
}
{
matches = [
{
app-id = "anki";
title = "Add";
}
];
default-column-width.proportion = .25;
}
{
matches = [
{ app-id = "foot"; }
{
app-id = "anki";
title = "^Browse";
}
{ app-id = "com.mitchellh.ghostt"; }
{ app-id = "org.kde.okular"; }
{ app-id = "kitty"; }
{ app-id = "VSCodium"; }
];
default-column-width.proportion = .5;
}
{
matches = [ { app-id = "librewolf"; } ];
default-column-width.proportion = .75;
}
];
};
programs.niri.settings.binds =
with config.lib.niri.actions;
let
sh = spawn "sh" "-c";
in
{
"Mod+Return".action = spawn terminal;
"Mod+D".action = spawn menu;
"Mod+Shift+E".action = quit;
"Mod+Equal".action = set-column-width "+10%";
"Mod+Minus".action = set-column-width "-10%";
"Mod+Shift+Equal".action = set-window-height "+10%";
"Mod+Shift+Minus".action = set-window-height "-10%";
"Super+Alt+L".action = spawn "swaylock";
"Mod+Ctrl+Q".action = close-window;
"Mod+H".action = focus-column-left;
"Mod+L".action = focus-column-right;
"Mod+K".action = focus-window-up;
"Mod+J".action = focus-window-down;
"Mod+Shift+H".action = move-column-left;
"Mod+Shift+L".action = move-column-right;
"Mod+Shift+K".action = move-window-up;
"Mod+Shift+J".action = move-window-down;
"Mod+U".action = focus-workspace-up;
"Mod+I".action = focus-workspace-down;
"Mod+Shift+U".action = move-window-to-workspace-up;
"Mod+Shift+I".action = move-window-to-workspace-down;
"Mod+W".action = maximize-column;
"Mod+E".action = set-column-width "50%";
"Mod+R".action = set-column-width "75%";
"Mod+Q".action = set-column-width "25%";
"Mod+C".action = center-column;
"Mod+Shift+Space".action = toggle-window-floating;
"Mod+Space".action = switch-focus-between-floating-and-tiling;
"Print".action = screenshot;
"Alt+Print".action = screenshot-window;
"Ctrl+Print".action = screenshot-screen;
# "Mod+R".action = switch-preset-column-width;
"Mod+Shift+R".action = switch-preset-window-height;
"Mod+Ctrl+R".action = reset-window-height;
"Mod+F".action = fullscreen-window;
"Mod+WheelScrollDown" = {
cooldown-ms = 150;
action = focus-column-right;
};
"Mod+WheelScrollUp" = {
cooldown-ms = 150;
action = focus-column-left;
};
"Mod+Shift+WheelScrollDown" = {
cooldown-ms = 150;
action = focus-workspace-down;
};
"Mod+Shift+WheelScrollUp" = {
cooldown-ms = 150;
action = focus-workspace-up;
};
"XF86AudioRaiseVolume".action = sh "wpctl set-volume @DEFAULT_AUDIO_SINK@ 1%+";
"XF86AudioLowerVolume".action = sh "wpctl set-volume @DEFAULT_AUDIO_SINK@ 1%-";
"XF86AudioMute".action = sh "wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle";
"XF86MonBrightnessUp".action = sh "brightnessctl set 1%+";
"XF86MonBrightnessDown".action = sh "brightnessctl set 1%-";
"Mod+1".action = focus-workspace 1;
"Mod+2".action = focus-workspace 2;
"Mod+3".action = focus-workspace 3;
"Mod+4".action = focus-workspace 4;
"Mod+5".action = focus-workspace 5;
"Mod+6".action = focus-workspace 6;
"Mod+7".action = focus-workspace 7;
"Mod+8".action = focus-workspace 8;
"Mod+9".action = focus-workspace 9;
"Mod+Shift+1".action = move-column-to-workspace 1;
"Mod+Shift+2".action = move-column-to-workspace 2;
"Mod+Shift+3".action = move-column-to-workspace 3;
"Mod+Shift+4".action = move-column-to-workspace 4;
"Mod+Shift+5".action = move-column-to-workspace 5;
"Mod+Shift+6".action = move-column-to-workspace 6;
"Mod+Shift+7".action = move-column-to-workspace 7;
"Mod+Shift+8".action = move-column-to-workspace 8;
"Mod+Shift+9".action = move-column-to-workspace 9;
"Mod+Alt+B".action = spawn browser;
"Mod+Alt+A".action = spawn "anki";
"Mod+Alt+F".action = spawn file-manager;
"Mod+Alt+E".action = spawn "evolution";
"Mod+P".action = spawn "bitwarden";
"Mod+Comma".action = sh clipboard;
"MouseForward".action = spawn "sh" "${./scripts/remote.sh}" "btn1";
"MouseBack".action = spawn "sh" "${./scripts/remote.sh}";
};
}

BIN
home/niri/nixos-c-book.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 150 KiB

25
home/niri/scripts/remote.sh Executable file
View file

@ -0,0 +1,25 @@
#!/usr/bin/env bash
active_window=$(niri msg --json focused-window |jq -r .app_id)
if [ "$1" = "btn1" ]; then
if [ "$active_window" = "anki" ]; then
wtype " "
elif [ "$active_window" = "kitty" ]; then
wtype -M ctrl -M shift -k c -m ctrl -m shift
elif [ "$active_window" = "chromium-browser" ] || [ "$active_window" = "librewolf" ]; then
wtype -M alt -P right -p right -m alt
else
wtype -M ctrl -k c -m ctrl
fi
else
if [ "$active_window" = "anki" ]; then
wtype "1"
elif [ "$active_window" = "kitty" ]; then
wtype -M ctrl -M shift -k v -m ctrl
elif [ "$active_window" = "chromium-browser" ] || [ "$active_window" = "librewolf" ]; then
wtype -M alt -P left -p left -m alt
else
wtype -M ctrl -k v -m ctrl
fi
fi

View file

@ -1,4 +1,4 @@
{ pkgs, ... }: { pkgs, inputs, ... }:
{ {
programs.nixvim = { programs.nixvim = {
enable = true; enable = true;
@ -15,15 +15,18 @@
incsearch = true; incsearch = true;
smartcase = true; smartcase = true;
}; };
colorscheme = "iceberg"; colorscheme = "github_dark_tritanopia";
clipboard.register = "unnamedplus"; clipboard.register = "unnamed";
globals = { globals = {
mapleader = ","; mapleader = ",";
}; };
extraPlugins = with pkgs.vimPlugins; [ extraPlugins = [
iceberg-vim (pkgs.vimUtils.buildVimPlugin {
name = "github-theme";
src = inputs.nvim-github-theme;
})
]; ];
keymaps = [ keymaps = [
@ -68,6 +71,41 @@
key = "<C-e>"; key = "<C-e>";
mode = "i"; mode = "i";
} }
# quick chat with copilot
{
key = "<leader>ccq";
action.__raw = ''
function()
local input = vim.fn.input("Quick chat: ")
if input ~= "" then
require("CopilotChat").ask(input, { selection = require("CopilotChat.select").buffer })
end
end
'';
mode = [
"n"
"v"
];
}
# ask perplexity a quick question
{
key = "<leader>ccs";
action.__raw = ''
function()
local input = vim.fn.input("Perplexity: ")
if input ~= "" then
require("CopilotChat").ask(input, {
agent = "perplexityai",
selection = false,
})
end
end
'';
mode = [
"n"
"v"
];
}
]; ];
plugins.cmp = { plugins.cmp = {
@ -95,8 +133,8 @@
"<C-h>" = "cmp.mapping.abort()"; "<C-h>" = "cmp.mapping.abort()";
"<C-n>" = "cmp.mapping.select_next_item()"; "<C-n>" = "cmp.mapping.select_next_item()";
"<C-p>" = "cmp.mapping.select_prev_item()"; "<C-p>" = "cmp.mapping.select_prev_item()";
"<C-d>" = "cmp.mapping.scroll_docs(-4)"; "<C-u>" = "cmp.mapping.scroll_docs(-4)";
"<C-u>" = "cmp.mapping.scroll_docs(4)"; "<C-d>" = "cmp.mapping.scroll_docs(4)";
"<C-k>" = '' "<C-k>" = ''
cmp.mapping(function(fallback) cmp.mapping(function(fallback)
if cmp.visible() then if cmp.visible() then
@ -112,7 +150,8 @@
end end
end) end)
''; '';
"<Tab>" = '' # plain tab conflicts with i try to indent
"<C-Tab>" = ''
cmp.mapping(function(fallback) cmp.mapping(function(fallback)
if require("luasnip").jumpable(1) then if require("luasnip").jumpable(1) then
require("luasnip").jump(1) require("luasnip").jump(1)
@ -140,13 +179,23 @@
"K" = "hover"; "K" = "hover";
"gd" = "definition"; "gd" = "definition";
"gD" = "references"; "gD" = "references";
"gt" = "type_definition"; # "gt" = "type_definition"; # conflicts with switch tab
"gI" = "type_definition";
"gi" = "implementation"; "gi" = "implementation";
}; };
servers = { servers = {
bashls.enable = true; bashls.enable = true;
lua_ls.enable = true; lua_ls.enable = true;
nil_ls.enable = true; nil_ls = {
enable = true;
settings = {
formatting.command = [
"nix"
"fmt"
];
nix.flake.autoArchive = true;
};
};
rust_analyzer = { rust_analyzer = {
enable = true; enable = true;
installRustc = true; installRustc = true;
@ -157,19 +206,37 @@
plugins.treesitter = { plugins.treesitter = {
enable = true; enable = true;
nixGrammars = true; nixGrammars = true;
settings.indent.enable = true; settings = {
indent.enable = true;
auto_install = true;
highlight.enable = true;
};
}; };
plugins.fzf-lua = { plugins.fzf-lua = {
enable = true; enable = true;
profile = "fzf-native";
keymaps = { keymaps = {
"<leader>ff" = "git_files"; "<leader>ff" = "files";
"<leader>fg" = "live_grep"; "<leader>fg" = "live_grep";
}; };
}; };
plugins.neo-tree = { plugins.neo-tree = {
enable = true; enable = true;
closeIfLastWindow = true; buffers.followCurrentFile.enabled = true;
window.width = 30;
};
plugins.gitsigns = {
enable = true;
settings.current_line_blame = true;
};
plugins.copilot-chat = {
enable = true;
settings = {
model = "claude-3.5-sonnet";
};
}; };
plugins.cmp-buffer.enable = true; plugins.cmp-buffer.enable = true;
@ -181,6 +248,8 @@
plugins.nvim-autopairs.enable = true; plugins.nvim-autopairs.enable = true;
plugins.rainbow-delimiters.enable = true; plugins.rainbow-delimiters.enable = true;
plugins.web-devicons.enable = true; plugins.web-devicons.enable = true;
plugins.gitsigns.enable = true; plugins.auto-save.enable = true;
plugins.indent-blankline.enable = true;
plugins.undotree.enable = true;
}; };
} }

80
home/plasma.nix Normal file
View file

@ -0,0 +1,80 @@
{ ... }:
{
programs.plasma = {
enable = true;
overrideConfig = true;
immutableByDefault = true;
workspace = {
lookAndFeel = "org.ide.breezedark.desktop";
cursor = {
theme = "Bibata-Modern-Classic";
size = 23;
};
};
fonts = {
general = {
family = "IBM Plex Mono";
pointSize = 12;
};
};
input.keyboard = {
numlockOnStartup = "on";
options = [ "ctrl:nocaps" ];
};
# Meta key is actually the Super key in KDE
hotkeys.commands = {
"launch-terminal" = {
name = "launch terminal";
key = "Meta+Return";
command = "kitty";
};
"launch-browser" = {
name = "launch browser";
key = "Meta+B";
command = "librewolf";
};
};
shortcuts = {
kwin = {
"Switch Window Down" = "Meta+J";
"Switch Window Left" = "Meta+H";
"Switch Window Right" = "Meta+L";
"Switch Window Up" = "Meta+K";
"Window Quick Tile Down" = "Meta+Shift+J";
"Window Quick Tile Left" = "Meta+Shift+H";
"Window Quick Tile Right" = "Meta+Shift+L";
"Window Quick Tile Up" = "Meta+Shift+K";
"Window Close" = "Meta+Ctrl+Q";
"Window Maximize" = "Meta+W";
"Window Minimize" = "Meta+Shift+-";
"Window Fullscreen" = "Meta+F";
"Window Shrink Horizontal" = "Meta+-";
};
ksmserver = {
"Lock Session" = [
"Screensaver"
"Meta+Ctrl+L"
];
};
};
configFile = {
# save RAM
baloofilerc."Basic Settings"."Indexing-Enabled" = false;
};
# looks like KDE overrides services.logind settings
powerdevil.AC = {
whenLaptopLidClosed = "hibernate";
};
powerdevil.battery = {
whenLaptopLidClosed = "hibernate";
};
};
}

View file

@ -125,6 +125,7 @@ for_window [app_id=mpv] inhibit_idle visible, floating enable, sticky enable
for_window [app_id="LibreWolf" title="^Extension"] floating enable for_window [app_id="LibreWolf" title="^Extension"] floating enable
for_window [floating] border csd for_window [floating] border csd
for_window [app_id="Bitwarden"] floating enable for_window [app_id="Bitwarden"] floating enable
for_window [app_id=anki title="Add"] floating enable
bar { bar {
swaybar_command waybar swaybar_command waybar

40
home/vscode.nix Normal file
View file

@ -0,0 +1,40 @@
{ pkgs, ... }:
{
programs.vscode = {
enable = true;
package = pkgs.vscodium;
enableUpdateCheck = false;
enableExtensionUpdateCheck = false;
mutableExtensionsDir = false;
extensions = with pkgs.vscode-extensions; [
vscodevim.vim
jnoortheen.nix-ide
editorconfig.editorconfig
github.github-vscode-theme
github.copilot
rust-lang.rust-analyzer
];
userSettings = {
"workbench.colorTheme" = "GitHub Dark Default";
"files.autoSave" = "afterDelay";
"nix.enableLanguageServer" = true;
"nix.serverPath" = "nixd";
"editor.fontFamily" = "IBM Plex Mono";
"editor.fontSize" = 16;
"editor.wordWrap" = "on";
# vim mode settings
"vim.handleKeys" = {
"<C-b>" = false; # file tree toggle
};
"vim.normalModeKeyBindings" = [
{
"before" = [ ";" ];
"after" = [ ":" ];
"silent" = true;
}
];
"workbench.startupEditor" = "none";
};
};
}

View file

@ -6,8 +6,8 @@
"margin-left": 0, "margin-left": 0,
"margin-right": 0, "margin-right": 0,
"margin-top": 0, "margin-top": 0,
"modules-left": ["sway/workspaces", "clock#time", "clock#date", "battery"], // Sets modules for the left of the bar "modules-left": ["niri/workspaces", "clock#time", "clock#date", "battery"], // Sets modules for the left of the bar
"modules-center": ["sway/window"], // Set modules for the center of the bar "modules-center": ["niri/window"], // Set modules for the center of the bar
"modules-right": ["tray", "temperature", "cpu", "memory", "wireplumber"], // Set modules for the right of the bar "modules-right": ["tray", "temperature", "cpu", "memory", "wireplumber"], // Set modules for the right of the bar
"clock#time": { "clock#time": {
"format": "<span color=\"#7aa2f7\"> </span>{:%H:%M:%S}", "format": "<span color=\"#7aa2f7\"> </span>{:%H:%M:%S}",
@ -71,7 +71,7 @@
"on-click": "pavucontrol", "on-click": "pavucontrol",
"interval": 4, "interval": 4,
}, },
"sway/window": { "niri/window": {
"max-length": 64, "max-length": 64,
}, },
"tray": { "tray": {

View file

@ -16,7 +16,6 @@
systemd.user.startServices = "sd-switch"; systemd.user.startServices = "sd-switch";
home.packages = with pkgs; [ home.packages = with pkgs; [
foot.terminfo
attic-server attic-server
]; ];
} }

22
home/yt/codespace.nix Normal file
View file

@ -0,0 +1,22 @@
{
pkgs,
...
}:
{
imports = [
./common.nix
];
home = {
username = "codespace";
homeDirectory = "/home/codespace";
stateVersion = "24.05";
};
programs.home-manager.enable = true;
systemd.user.startServices = "sd-switch";
home.packages = with pkgs; [
foot.terminfo
attic-client
];
}

View file

@ -30,7 +30,7 @@
programs.git = { programs.git = {
enable = true; enable = true;
userName = "cy"; userName = "cy";
userEmail = "hi@cything.io"; userEmail = "cy@cy7.sh";
delta = { delta = {
enable = true; enable = true;
options = { options = {
@ -44,7 +44,11 @@
rebase = true; rebase = true;
autostash = true; autostash = true;
}; };
merge.tool = "vimdiff"; merge = {
tool = "vimdiff";
keepBackup = false;
prompt = false;
};
rebase = { rebase = {
stat = true; stat = true;
autoStash = true; autoStash = true;
@ -52,12 +56,10 @@
updateRefs = true; updateRefs = true;
}; };
help.autocorrect = 1; help.autocorrect = 1;
mergetool = { "mergetool \"vimdiff\"".cmd = "nvim -d $LOCAL $REMOTE $MERGED -c '$wincmd w' -c 'wincmd J'";
prompt = false;
path = "nvim-open";
};
}; };
}; };
programs.ripgrep.enable = true; programs.ripgrep.enable = true;
programs.man.generateCaches = true; programs.man.generateCaches = true;
programs.fd.enable = true;
} }

View file

@ -1,11 +1,17 @@
{ {
pkgs, pkgs,
lib,
... ...
}: }:
{ {
imports = [ imports = [
./common.nix ./common.nix
../foot.nix ../foot.nix
../niri
../irssi.nix
../kitty.nix
../vscode.nix
../plasma.nix
]; ];
home = { home = {
username = "yt"; username = "yt";
@ -16,31 +22,34 @@
systemd.user.startServices = "sd-switch"; systemd.user.startServices = "sd-switch";
qt = { # keep this commented when using plasma
enable = true; # otherwise "system settings" in KDE will not function
platformTheme.name = "gtk"; # qt = {
style.name = "adwaita-dark"; # enable = true;
style.package = pkgs.adwaita-qt; # platformTheme.name = "kde";
}; # style.name = "breeze-dark";
# style.package = pkgs.kdePackages.breeze;
# };
gtk = { # this one too
enable = true; # gtk = {
cursorTheme = { # enable = true;
# theme = {
# package = pkgs.adw-gtk3;
# name = "adw-gtk3-dark";
# };
# iconTheme = {
# package = pkgs.adwaita-icon-theme;
# name = "Adwaita";
# };
# };
home.pointerCursor = {
package = pkgs.bibata-cursors; package = pkgs.bibata-cursors;
name = "Bibata-Modern"; name = "Bibata-Modern-Classic";
}; size = 23;
theme = { gtk.enable = true;
package = pkgs.adw-gtk3; x11.enable = true;
name = "adw-gtk3-dark";
};
iconTheme = {
package = pkgs.adwaita-icon-theme;
name = "Adwaita";
};
};
home.sessionVariables = {
ANKI_WAYLAND = "1";
}; };
home.packages = with pkgs; [ home.packages = with pkgs; [
@ -50,7 +59,6 @@
bitwarden-desktop bitwarden-desktop
bitwarden-cli bitwarden-cli
fastfetch fastfetch
discord
nwg-look nwg-look
kdePackages.gwenview kdePackages.gwenview
kdePackages.okular kdePackages.okular
@ -98,6 +106,24 @@
gdb gdb
clang clang
seahorse seahorse
github-cli
fuzzel
nixpkgs-review
just
hugo
ghidra-bin
sequoia
sccache
awscli2
lldb
(cutter.withPlugins (p: with p; [
rz-ghidra
jsdec
sigdb
]))
ida-free
patchelf
radare2
]; ];
programs.waybar.enable = true; programs.waybar.enable = true;
@ -120,7 +146,6 @@
}; };
xdg.configFile = { xdg.configFile = {
sway.source = ../sway;
rofi.source = ../rofi; rofi.source = ../rofi;
waybar.source = ../waybar; waybar.source = ../waybar;
mpv.source = ../mpv; mpv.source = ../mpv;
@ -136,5 +161,36 @@
''; '';
}; };
services.gnome-keyring.enable = true; programs.direnv = {
enable = true;
nix-direnv.enable = true;
};
programs.git.extraConfig = {
user = {
signingKey = "~/.ssh/id.key";
};
gpg.format = "ssh";
commit.gpgsign = true;
core.sshCommand = "ssh -i ~/.ssh/id.key";
};
home.sessionVariables = {
# to make ghidra work on xwayland
_JAVA_AWT_WM_NONREPARENTING = 1;
# sccache stuff
RUSTC_WRAPPER = "${lib.getExe pkgs.sccache}";
SCCACHE_BUCKET = "sccache";
SCCACHE_REGION = "earth";
SCCACHE_ENDPOINT = "https://sccache.s3.cy7.sh";
SCCACHE_ALLOW_CORE_DUMPS = "true";
SCCACHE_S3_USE_SSL = "true";
SCCACHE_CACHE_MULTIARCH = "true";
SCCACHE_LOG_LEVEL = "warn";
AWS_DEFAULT_REGION = "earth";
AWS_ENDPOINT_URL = "https://s3.cy7.sh";
AWS_ACCESS_KEY_ID = "$(cat /run/secrets/aws/key_id)";
AWS_SECRET_ACCESS_KEY = "$(cat /run/secrets/aws/key_secret)";
};
} }

View file

@ -39,11 +39,6 @@
initExtra = '' initExtra = ''
# disable control+s to pause terminal # disable control+s to pause terminal
unsetopt FLOW_CONTROL unsetopt FLOW_CONTROL
# manually integrate fzf cause we need to make sure zsh-vi-mode
# won't override C-r
function zvm_after_init() {
eval "$(${pkgs.fzf}/bin/fzf --zsh)"
}
# useful emacs mode bindings # useful emacs mode bindings
bindkey -M viins "^E" end-of-line bindkey -M viins "^E" end-of-line
@ -87,9 +82,9 @@
"ta" = "tmux new-session -A -s"; "ta" = "tmux new-session -A -s";
"se" = "sudoedit"; "se" = "sudoedit";
"s" = "sudo"; "s" = "sudo";
"nrs" = "sudo nixos-rebuild switch --flake ."; "nrs" = "sudo nixos-rebuild switch -L --flake .";
"nrt" = "sudo nixos-rebuild test --flake ."; "nrt" = "sudo nixos-rebuild test -L --flake .";
"hrs" = "home-manager switch --flake ."; "hrs" = "home-manager switch -L --flake .";
"g" = "git"; "g" = "git";
"ga" = "git add"; "ga" = "git add";
"gaa" = "git add --all"; "gaa" = "git add --all";
@ -116,4 +111,5 @@
programs.zoxide.enableZshIntegration = true; programs.zoxide.enableZshIntegration = true;
programs.eza.enableZshIntegration = true; programs.eza.enableZshIntegration = true;
programs.nix-index.enableZshIntegration = false; programs.nix-index.enableZshIntegration = false;
programs.direnv.enableZshIntegration = false;
} }

View file

@ -1,79 +0,0 @@
{
acme_ca https://acme.zerossl.com/v2/DV90
acme_eab {
key_id {$EAB_KEY_ID}
mac_key {$EAB_MAC_KEY}
}
}
(common) {
encode zstd gzip
header Strict-Transport-Security "max-age=63072000; includeSubDomains; preload"
}
git.cything.io {
import common
# wrap in route so things are evaluated in the order written
route {
# rewrite gitlab URIs to make it work with forgejo
uri path_regexp /-/ /
uri replace /blob/ /src/
redir https://git.cy7.sh{uri} permanent
}
}
git.cy7.sh {
import common
reverse_proxy localhost:3000
}
rss.cything.io {
import common
reverse_proxy localhost:8080
}
photos.cy7.sh {
import common
reverse_proxy localhost:2283
}
chat.cything.io {
import common
reverse_proxy localhost:8448
}
pass.cy7.sh {
import common
reverse_proxy localhost:8081
}
dns.cything.io {
import common
reverse_proxy localhost:8082
}
pad.cything.io {
import common
reverse_proxy localhost:8085
}
red.cything.io {
import common
reverse_proxy localhost:8087
}
grafana.cything.io {
import common
reverse_proxy localhost:8088
}
element.cything.io {
import common
reverse_proxy localhost:8089
}
cache.cything.io {
import common
reverse_proxy localhost:8090
}

View file

@ -21,4 +21,9 @@
]; ];
}; };
}; };
services.caddy.virtualHosts."dns.cything.io".extraConfig = ''
import common
reverse_proxy localhost:8082
'';
} }

View file

@ -31,4 +31,9 @@
}; };
}; };
}; };
services.caddy.virtualHosts."cache.cything.io".extraConfig = ''
import common
reverse_proxy localhost:8090
'';
} }

View file

@ -1,11 +1,18 @@
{ ... }: { inputs, ... }:
{ {
services.conduwuit = { services.conduwuit = {
enable = true; enable = true;
package =
inputs.conduwuit.packages.x86_64-linux.static-x86_64-linux-musl-all-features-x86_64-haswell-optimised;
settings.global = { settings.global = {
port = [ 8448 ]; port = [ 8448 ];
server_name = "cything.io"; server_name = "cything.io";
allow_check_for_updates = true; allow_check_for_updates = true;
}; };
}; };
services.caddy.virtualHosts."chat.cything.io".extraConfig = ''
import common
reverse_proxy localhost:8448
'';
} }

View file

@ -1,6 +1,4 @@
{ {
config,
lib,
pkgs, pkgs,
... ...
}: }:
@ -25,6 +23,8 @@
./element.nix ./element.nix
./attic.nix ./attic.nix
./forgejo.nix ./forgejo.nix
./garage.nix
./tailscale.nix
]; ];
sops.age.keyFile = "/root/.config/sops/age/keys.txt"; sops.age.keyFile = "/root/.config/sops/age/keys.txt";
@ -65,10 +65,19 @@
"attic/env" = { "attic/env" = {
sopsFile = ../../secrets/services/attic.yaml; sopsFile = ../../secrets/services/attic.yaml;
}; };
"garage/env" = {
sopsFile = ../../secrets/services/garage.yaml;
};
"tailscale/auth" = {
sopsFile = ../../secrets/services/tailscale.yaml;
};
}; };
boot.loader.grub.enable = true; boot = {
boot.loader.grub.device = "/dev/vda"; loader.grub.enable = true;
loader.grub.device = "/dev/vda";
kernelPackages = pkgs.linuxPackages_latest;
};
system.stateVersion = "24.05"; system.stateVersion = "24.05";
@ -172,11 +181,13 @@
programs.gnupg.agent.enable = true; programs.gnupg.agent.enable = true;
programs.git.enable = true; programs.git.enable = true;
services.caddy = { my.caddy.enable = true;
enable = true; services.caddy.virtualHosts."cy7.sh" = {
configFile = ./Caddyfile; serverAliases = [ "www.cy7.sh" ];
environmentFile = config.sops.secrets."caddy/env".path; extraConfig = ''
logFormat = lib.mkForce "level INFO"; import common
redir https://cything.io temporary
'';
}; };
# container stuff # container stuff
@ -192,4 +203,5 @@
}; };
}; };
virtualisation.oci-containers.backend = "podman"; virtualisation.oci-containers.backend = "podman";
environment.enableAllTerminfo = true;
} }

View file

@ -7,4 +7,9 @@
port = 8112; port = 8112;
}; };
}; };
services.caddy.virtualHosts."t.cy7.sh".extraConfig = ''
import common
reverse_proxy localhost:8112
'';
} }

View file

@ -7,9 +7,12 @@
virtualisation.oci-containers.containers.element = { virtualisation.oci-containers.containers.element = {
image = "vectorim/element-web"; image = "vectorim/element-web";
autoStart = true; autoStart = true;
ports = [ "127.0.0.1:8089:80" ]; ports = [ "127.0.0.1:8089:8089" ];
pull = "newer"; pull = "newer";
networks = [ "element-net" ]; networks = [ "element-net" ];
environment = {
ELEMENT_WEB_PORT = "8089";
};
}; };
systemd.services.create-element-net = { systemd.services.create-element-net = {
@ -22,4 +25,9 @@
${pkgs.podman}/bin/podman network create element-net ${pkgs.podman}/bin/podman network create element-net
''; '';
}; };
services.caddy.virtualHosts."element.cy7.sh".extraConfig = ''
import common
reverse_proxy localhost:8089
'';
} }

View file

@ -1,7 +1,8 @@
{ ... }: { pkgs, ... }:
{ {
services.forgejo = { services.forgejo = {
enable = true; enable = true;
package = pkgs.forgejo; # uses forgejo-lts by default
user = "git"; user = "git";
group = "git"; group = "git";
settings = { settings = {
@ -10,16 +11,17 @@
HTTP_PORT = 3000; HTTP_PORT = 3000;
HTTP_ADDR = "127.0.0.1"; HTTP_ADDR = "127.0.0.1";
DOMAIN = "git.cy7.sh"; DOMAIN = "git.cy7.sh";
LANDING_PAGE = "/cy"; LANDING_PAGE = "explore";
}; };
session.COOKIE_SECURE = true; session.COOKIE_SECURE = true;
service.DISABLE_REGISTRATION = true; service.DISABLE_REGISTRATION = true;
ui = { ui = {
AMBIGUOUS_UNICODE_DETECTION = false; AMBIGUOUS_UNICODE_DETECTION = false;
DEFAULT_THEME = "gitea-dark"; DEFAULT_THEME = "forgejo-dark";
}; };
actions.ENABLED = false; actions.ENABLED = false;
repository.ENABLE_PUSH_CREATE_USER = true; repository.ENABLE_PUSH_CREATE_USER = true;
indexer.REPO_INDEXER_ENABLED = true;
}; };
database = { database = {
type = "postgres"; type = "postgres";
@ -28,4 +30,24 @@
name = "git"; name = "git";
}; };
}; };
services.caddy.virtualHosts."git.cy7.sh".extraConfig = ''
import common
# renamed repo
uri replace /cy/infra /cy/nixos-config
reverse_proxy localhost:3000
'';
services.caddy.virtualHosts."git.cything.io".extraConfig = ''
import common
# wrap in route so things are evaluated in the order written
route {
# rewrite gitlab URIs to make it work with forgejo
uri path_regexp /-/ /
uri replace /blob/ /src/
redir https://git.cy7.sh{uri} permanent
}
'';
} }

43
hosts/chunk/garage.nix Normal file
View file

@ -0,0 +1,43 @@
{ config, pkgs, ... }:
{
services.garage = {
enable = true;
package = pkgs.garage;
settings = {
data_dir = "/mnt/garage";
s3_api = {
s3_region = "earth";
api_bind_addr = "[::]:3900";
root_domain = ".s3.cy7.sh";
};
s3_web = {
bind_addr = "[::]:3902";
root_domain = ".web.s3.cy7.sh";
index = "index.html";
};
admin.api_bind_addr = "[::]:3903";
rpc_bind_addr = "[::]:3901";
replication_factor = 1;
db_engine = "lmdb";
};
environmentFile = config.sops.secrets."garage/env".path;
};
services.caddy.virtualHosts = {
"s3.cy7.sh" = {
serverAliases = [ "*.s3.cy7.sh" ];
extraConfig = ''
import common
reverse_proxy localhost:3900
'';
};
"*.web.s3.cy7.sh".extraConfig = ''
import common
reverse_proxy localhost:3902
'';
"admin.s3.cy7.sh".extraConfig = ''
import common
reverse_proxy localhost:3903
'';
};
}

View file

@ -31,4 +31,9 @@
} }
]; ];
}; };
services.caddy.virtualHosts."grafana.cy7.sh".extraConfig = ''
import common
reverse_proxy localhost:8088
'';
} }

View file

@ -16,4 +16,9 @@
protocolUseSSL = true; protocolUseSSL = true;
}; };
}; };
services.caddy.virtualHosts."pad.cy7.sh".extraConfig = ''
import common
reverse_proxy localhost:8085
'';
} }

View file

@ -95,4 +95,9 @@ in
${pkgs.podman}/bin/podman network create immich-net ${pkgs.podman}/bin/podman network create immich-net
''; '';
}; };
services.caddy.virtualHosts."photos.cy7.sh".extraConfig = ''
import common
reverse_proxy localhost:2283
'';
} }

View file

@ -5,8 +5,13 @@
adminCredentialsFile = config.sops.secrets."miniflux/env".path; adminCredentialsFile = config.sops.secrets."miniflux/env".path;
config = { config = {
PORT = 8080; PORT = 8080;
BASE_URL = "https://rss.cything.io"; BASE_URL = "https://rss.cy7.sh";
FORCE_REFRESH_INTERVAL = 0; # don't rate limit me FORCE_REFRESH_INTERVAL = 0; # don't rate limit me
}; };
}; };
services.caddy.virtualHosts."rss.cy7.sh".extraConfig = ''
import common
reverse_proxy localhost:8080
'';
} }

View file

@ -38,5 +38,23 @@
ExecStop = "${lib.getExe' pkgs.fuse "fusermount"} -u /mnt/attic"; ExecStop = "${lib.getExe' pkgs.fuse "fusermount"} -u /mnt/attic";
}; };
}; };
systemd.services.garage-mount = {
enable = true;
description = "Mount the garage data remote";
requires = [ "network-online.target" ];
after = [ "network-online.target" ];
requiredBy = [ "garage.service" ];
before = [ "garage.service" ];
serviceConfig = {
Type = "notify";
ExecStartPre = "/usr/bin/env mkdir -p /mnt/garage";
ExecStart = "${lib.getExe pkgs.rclone} mount --config ${
config.sops.secrets."rclone/config".path
} --cache-dir /var/cache/rclone --transfers=32 --checkers=32 --vfs-cache-mode writes --vfs-cache-max-size 5G --allow-other rsyncnet:garage /mnt/garage ";
ExecStop = "${lib.getExe' pkgs.fuse "fusermount"} -u /mnt/garage";
};
};
programs.fuse.userAllowOther = true; programs.fuse.userAllowOther = true;
} }

View file

@ -10,4 +10,9 @@
REDLIB_ROBOTS_DISABLE_INDEXING = "on"; REDLIB_ROBOTS_DISABLE_INDEXING = "on";
}; };
}; };
services.caddy.virtualHosts."red.cy7.sh".extraConfig = ''
import common
reverse_proxy localhost:8087
'';
} }

13
hosts/chunk/tailscale.nix Normal file
View file

@ -0,0 +1,13 @@
{ config, ... }:
{
services.tailscale = {
enable = true;
authKeyFile = config.sops.secrets."tailscale/auth".path;
extraUpFlags = [
"--advertise-exit-node"
"--accept-dns=false"
];
useRoutingFeatures = "server";
openFirewall = true;
};
}

View file

@ -10,4 +10,9 @@
DATABASE_URL = "postgresql://vaultwarden:vaultwarden@127.0.0.1:5432/vaultwarden"; DATABASE_URL = "postgresql://vaultwarden:vaultwarden@127.0.0.1:5432/vaultwarden";
}; };
}; };
services.caddy.virtualHosts."pass.cy7.sh".extraConfig = ''
import common
reverse_proxy localhost:8081
'';
} }

View file

@ -1,4 +1,4 @@
{ ... }: { inputs, ... }:
{ {
nix = { nix = {
settings = { settings = {
@ -9,8 +9,21 @@
"root" "root"
"@wheel" "@wheel"
]; ];
trusted-public-keys = [ "central:uWhjva6m6dhC2hqNisjn2hXGvdGBs19vPkA1dPEuwFg=" ]; trusted-public-keys = [
substituters = [ "https://cache.cything.io/central" ]; "central:uWhjva6m6dhC2hqNisjn2hXGvdGBs19vPkA1dPEuwFg="
"niri.cachix.org-1:Wv0OmO7PsuocRKzfDoJ3mulSl7Z6oezYhGhR+3W2964="
"nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs="
"cache.garnix.io:CTFPyKSLcx5RMJKfLo5EEPUObbA78b0YQ2DTCJXqr9g="
"cything.cachix.org-1:xqW1W5NNL+wrM9wfSELb0MLj/harD2ZyB4HbdaMyvPI="
];
substituters = [
"https://aseipp-nix-cache.global.ssl.fastly.net"
"https://cache.cything.io/central"
"https://niri.cachix.org"
"https://nix-community.cachix.org"
"https://cache.garnix.io"
"https://cything.cachix.org"
];
}; };
channel.enable = false; channel.enable = false;
optimise = { optimise = {
@ -26,6 +39,7 @@
extraOptions = '' extraOptions = ''
builders-use-substitutes = true builders-use-substitutes = true
''; '';
registry.nixpkgs.flake = inputs.nixpkgs;
}; };
time.timeZone = "America/Toronto"; time.timeZone = "America/Toronto";
networking.firewall.logRefusedConnections = false; networking.firewall.logRefusedConnections = false;

View file

@ -13,14 +13,16 @@
cything.io { cything.io {
import common import common
reverse_proxy localhost:8084
header /.well-known/matrix/* Content-Type application/json header /.well-known/matrix/* Content-Type application/json
header /.well-known/matrix/* Access-Control-Allow-Origin * header /.well-known/matrix/* Access-Control-Allow-Origin *
header /.well-known/matrix/* Access-Control-Allow-Methods GET,POST,PUT,DELETE,OPTIONS,PATCH,HEAD header /.well-known/matrix/* Access-Control-Allow-Methods GET,POST,PUT,DELETE,OPTIONS,PATCH,HEAD
header /.well-known/matrix/* Access-Control-Allow-Headers X-Requested-With,Content-Type,Authorization,Origin,Accept header /.well-known/matrix/* Access-Control-Allow-Headers X-Requested-With,Content-Type,Authorization,Origin,Accept
route {
respond /.well-known/matrix/server {"m.server":"chat.cything.io:443"} respond /.well-known/matrix/server {"m.server":"chat.cything.io:443"}
respond /.well-known/matrix/client {"m.server":{"base_url":"https://chat.cything.io"},"m.homeserver":{"base_url":"https://chat.cything.io"},"org.matrix.msc3575.proxy":{"url":"https://chat.cything.io"}} respond /.well-known/matrix/client {"m.server":{"base_url":"https://chat.cything.io"},"m.homeserver":{"base_url":"https://chat.cything.io"},"org.matrix.msc3575.proxy":{"url":"https://chat.cything.io"}}
redir https://cy7.sh/posts{uri} permanent
}
} }
www.cything.io { www.cything.io {

View file

@ -1,7 +1,6 @@
{ {
config, config,
pkgs, pkgs,
inputs,
lib, lib,
... ...
}: }:
@ -10,12 +9,7 @@
./hardware-configuration.nix ./hardware-configuration.nix
../common.nix ../common.nix
../zsh.nix ../zsh.nix
{ ./tailscale.nix
disabledModules = [
"services/backup/btrbk.nix"
];
}
(inputs.nixpkgs-btrbk + "/nixos/modules/services/backup/btrbk.nix")
]; ];
sops.age.keyFile = "/root/.config/sops/age/keys.txt"; sops.age.keyFile = "/root/.config/sops/age/keys.txt";
@ -39,6 +33,17 @@
sopsFile = ../../secrets/newsboat.yaml; sopsFile = ../../secrets/newsboat.yaml;
owner = "yt"; owner = "yt";
}; };
"tailscale/auth" = {
sopsFile = ../../secrets/services/tailscale.yaml;
};
"aws/key_id" = {
sopsFile = ../../secrets/yt/aws.yaml;
owner = "yt";
};
"aws/key_secret" = {
sopsFile = ../../secrets/yt/aws.yaml;
owner = "yt";
};
}; };
boot = { boot = {
@ -48,7 +53,7 @@
efi.canTouchEfiVariables = false; # toggle when installing efi.canTouchEfiVariables = false; # toggle when installing
}; };
tmp.cleanOnBoot = true; tmp.cleanOnBoot = true;
kernelPackages = pkgs.linuxPackages_latest; kernelPackages = pkgs.linuxKernel.packages.linux_zen;
extraModulePackages = with config.boot.kernelPackages; [ extraModulePackages = with config.boot.kernelPackages; [
rtl8821ce rtl8821ce
]; ];
@ -65,6 +70,7 @@
pkiBundle = "/var/lib/sbctl"; pkiBundle = "/var/lib/sbctl";
}; };
kernel.sysctl."kernel.sysrq" = 1; kernel.sysctl."kernel.sysrq" = 1;
binfmt.emulatedSystems = [ "aarch64-linux" ];
}; };
networking = { networking = {
@ -135,6 +141,7 @@
"wheel" "wheel"
"libvirtd" "libvirtd"
"docker" "docker"
"disk"
]; ];
environment.systemPackages = with pkgs; [ environment.systemPackages = with pkgs; [
@ -167,6 +174,8 @@
haskell-language-server haskell-language-server
ghc ghc
sbctl # secure boot sbctl # secure boot
wine-wayland
wine64
]; ];
environment.sessionVariables = { environment.sessionVariables = {
@ -180,6 +189,12 @@
services.displayManager = { services.displayManager = {
enable = true; enable = true;
autoLogin.user = "yt"; autoLogin.user = "yt";
defaultSession = "plasma";
sddm = {
enable = true;
wayland.enable = true;
autoNumlock = true;
};
}; };
fonts.packages = with pkgs; [ fonts.packages = with pkgs; [
@ -195,11 +210,6 @@
}; };
services.blueman.enable = true; services.blueman.enable = true;
programs.sway = {
enable = true;
wrapperFeatures.gtk = true;
};
my.backup = { my.backup = {
enable = true; enable = true;
jobName = "ytnixRsync"; jobName = "ytnixRsync";
@ -274,12 +284,56 @@
programs.virt-manager.enable = true; programs.virt-manager.enable = true;
services.usbmuxd.enable = true; services.usbmuxd.enable = true;
programs.nix-ld.enable = true; programs.nix-ld.dev = {
enable = true;
# nix run github:thiagokokada/nix-alien#nix-alien-find-libs ./<binary>
libraries = with pkgs; [
mesa
extest
stdenv.cc.cc
libGL
fontconfig
libxkbcommon
zlib
libxml2
dbus
freetype
egl-wayland
waylandpp
cairo
xcb-util-cursor
libplist
p11-kit
kdePackages.qtwayland
qt6.qtwayland
libsForQt5.qt5.qtwayland
xorg.libX11
xorg.libxcb
xorg.xcbutilwm
xorg.xcbutilimage
xorg.xcbutilkeysyms
xorg.xcbutilrenderutil
xorg.libXScrnSaver
xorg.libXcomposite
xorg.libXcursor
xorg.libXdamage
xorg.libXext
xorg.libXfixes
xorg.libXi
xorg.libXrandr
xorg.libXrender
xorg.libXtst
xorg.libxkbfile
xorg.libxshmfence
];
};
programs.evolution.enable = true; programs.evolution.enable = true;
xdg.portal = { xdg.portal = {
enable = true; enable = true;
wlr.enable = true; wlr.enable = true;
xdgOpenUsePortal = true;
extraPortals = with pkgs; [ xdg-desktop-portal-gtk xdg-desktop-portal-gnome ];
}; };
programs.obs-studio = { programs.obs-studio = {
@ -322,4 +376,23 @@
}; };
services.trezord.enable = true; services.trezord.enable = true;
programs.niri.enable = true;
programs.niri.package = pkgs.niri-unstable;
programs.xwayland.enable = true;
services.udev.extraHwdb = ''
SUBSYSTEM=="usb", SYSFS{idVendor}=="090c", SYSFS{idProduct}=="1000", ACTION=="add", GROUP="users", MODE="0664"
'';
programs.ssh = {
askPassword = "${pkgs.seahorse}/libexec/seahorse/ssh-askpass";
startAgent = true;
enableAskPassword = true;
};
services.desktopManager.plasma6 = {
enable = true;
enableQt5Integration = true;
};
} }

13
hosts/ytnix/tailscale.nix Normal file
View file

@ -0,0 +1,13 @@
{ config, ... }:
{
services.tailscale = {
enable = true;
authKeyFile = config.sops.secrets."tailscale/auth".path;
openFirewall = true;
useRoutingFeatures = "client";
extraUpFlags = [
"--exit-node=100.122.132.30"
"--accept-dns=false"
];
};
}

18
justfile Normal file
View file

@ -0,0 +1,18 @@
update:
git branch -D update || true
git switch -c update
nix flake update
git add flake.lock
git commit -s -m "flake update"
git push -f
git switch main
upgrade:
git switch update
sudo nixos-rebuild switch -L --flake . --use-substitutes
nixos-rebuild switch -L --flake .#chunk --target-host root@2a0f:85c1:840:2bfb::1 --use-substitutes
nixos-rebuild switch -L --flake .#titan --target-host root@www.cything.io --use-substitutes
home-manager -L switch --flake .
git switch main
git merge update
git branch -d update

View file

@ -2,7 +2,6 @@
config, config,
lib, lib,
pkgs, pkgs,
inputs,
... ...
}: }:
let let
@ -31,13 +30,6 @@ let
]; ];
in in
{ {
imports = [
{
disabledModules = [ "services/backup/borgbackup.nix" ];
}
(inputs.nixpkgs-borg + "/nixos/modules/services/backup/borgbackup.nix")
];
options.my.backup = { options.my.backup = {
enable = lib.mkEnableOption "backup"; enable = lib.mkEnableOption "backup";
paths = lib.mkOption { paths = lib.mkOption {

40
modules/caddy.nix Normal file
View file

@ -0,0 +1,40 @@
{
config,
lib,
pkgs,
...
}:
let
cfg = config.my.caddy;
in
{
options.my.caddy = {
enable = lib.mkEnableOption "caddy reverse proxy";
};
config = lib.mkIf cfg.enable {
services.caddy = {
enable = true;
package = pkgs.caddy.withPlugins {
plugins = [
# error message will tell you the correct version tag to use
# (still need the @ to pass nix config check)
"github.com/caddy-dns/cloudflare@v0.0.0-20240703190432-89f16b99c18e"
];
hash = "sha256-jCcSzenewQiW897GFHF9WAcVkGaS/oUu63crJu7AyyQ=";
};
logFormat = lib.mkForce "level INFO";
acmeCA = "https://acme-v02.api.letsencrypt.org/directory";
extraConfig = ''
(common) {
encode zstd gzip
header Strict-Transport-Security "max-age=63072000; includeSubDomains; preload"
}
'';
globalConfig = ''
acme_dns cloudflare {$CLOUDFLARE_KEY}
'';
environmentFile = config.sops.secrets."caddy/env".path;
};
};
}

View file

@ -2,5 +2,6 @@
{ {
imports = [ imports = [
./backup.nix ./backup.nix
./caddy.nix
]; ];
} }

View file

@ -1,23 +1,28 @@
final: prev: { final: prev:
let
newRust = final.rust-bin.fromRustupToolchainFile ./rust-toolchain.toml;
newRustPlatform = final.makeRustPlatform {
cargo = newRust;
rustc = newRust;
};
in
{
conduwuit = prev.conduwuit.override (old: { conduwuit = prev.conduwuit.override (old: {
rustPlatform = old.rustPlatform // { rustPlatform = newRustPlatform // {
buildRustPackage = buildRustPackage =
args: args:
old.rustPlatform.buildRustPackage ( newRustPlatform.buildRustPackage (
args args
// { // {
version = "0.5.0-rc2"; version = "0.5.0-rc2";
src = final.fetchFromGitHub { src = final.fetchFromGitHub {
owner = "girlbossceo"; owner = "girlbossceo";
repo = "conduwuit"; repo = "conduwuit";
rev = "8c74e35e7640a041c1f3496d82585e5240294352"; rev = "5b8464252c2c03edf65e43153be026dbb768a12a";
hash = "sha256-/2YD3TXT9pQ7oPEm9wDrq35afU88qukMIWqrBX5JyXg="; hash = "sha256-yNdxoVZX13QUDJYM6zTMY9ExvacTqB+f0MLvDreSW8U=";
}; };
doCheck = false; doCheck = false;
cargoHash = "sha256-ZenMTCEJrALKQnW7/eXqrhFj+BedE9i/rQZMsPHl8K0="; cargoHash = "sha256-g19UujLI9d4aw+1273gfC17LDLOciqBvuLhe/VCsh80=";
cargoPatches = [
./fix-lint.patch
];
# unstable has this set to "conduit" # unstable has this set to "conduit"
meta.mainProgram = "conduwuit"; meta.mainProgram = "conduwuit";

View file

@ -1,74 +0,0 @@
diff --git a/Cargo.lock b/Cargo.lock
index 3f900a114..0d30a3fec 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -4493,7 +4493,7 @@ checksum = "8df9b6e13f2d32c91b9bd719c00d1958837bc7dec474d94952798cc8e69eeec3"
[[package]]
name = "tracing"
version = "0.1.41"
-source = "git+https://github.com/girlbossceo/tracing?rev=ccc4fbd8238c2d5ba354e61ec17ac610af11401d#ccc4fbd8238c2d5ba354e61ec17ac610af11401d"
+source = "git+https://github.com/girlbossceo/tracing?rev=3cf1c991e3660785d3855a34245949557db33209#3cf1c991e3660785d3855a34245949557db33209"
dependencies = [
"log",
"pin-project-lite",
@@ -4504,7 +4504,7 @@ dependencies = [
[[package]]
name = "tracing-attributes"
version = "0.1.28"
-source = "git+https://github.com/girlbossceo/tracing?rev=ccc4fbd8238c2d5ba354e61ec17ac610af11401d#ccc4fbd8238c2d5ba354e61ec17ac610af11401d"
+source = "git+https://github.com/girlbossceo/tracing?rev=3cf1c991e3660785d3855a34245949557db33209#3cf1c991e3660785d3855a34245949557db33209"
dependencies = [
"proc-macro2",
"quote",
@@ -4514,7 +4514,7 @@ dependencies = [
[[package]]
name = "tracing-core"
version = "0.1.33"
-source = "git+https://github.com/girlbossceo/tracing?rev=ccc4fbd8238c2d5ba354e61ec17ac610af11401d#ccc4fbd8238c2d5ba354e61ec17ac610af11401d"
+source = "git+https://github.com/girlbossceo/tracing?rev=3cf1c991e3660785d3855a34245949557db33209#3cf1c991e3660785d3855a34245949557db33209"
dependencies = [
"once_cell",
"valuable",
@@ -4534,7 +4534,7 @@ dependencies = [
[[package]]
name = "tracing-log"
version = "0.2.0"
-source = "git+https://github.com/girlbossceo/tracing?rev=ccc4fbd8238c2d5ba354e61ec17ac610af11401d#ccc4fbd8238c2d5ba354e61ec17ac610af11401d"
+source = "git+https://github.com/girlbossceo/tracing?rev=3cf1c991e3660785d3855a34245949557db33209#3cf1c991e3660785d3855a34245949557db33209"
dependencies = [
"log",
"once_cell",
@@ -4562,7 +4562,7 @@ dependencies = [
[[package]]
name = "tracing-subscriber"
version = "0.3.18"
-source = "git+https://github.com/girlbossceo/tracing?rev=ccc4fbd8238c2d5ba354e61ec17ac610af11401d#ccc4fbd8238c2d5ba354e61ec17ac610af11401d"
+source = "git+https://github.com/girlbossceo/tracing?rev=3cf1c991e3660785d3855a34245949557db33209#3cf1c991e3660785d3855a34245949557db33209"
dependencies = [
"matchers",
"nu-ansi-term",
diff --git a/Cargo.toml b/Cargo.toml
index 76acda807..a2916a6aa 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -513,16 +513,16 @@ version = "0.2"
# https://github.com/girlbossceo/tracing/commit/b348dca742af641c47bc390261f60711c2af573c
[patch.crates-io.tracing-subscriber]
git = "https://github.com/girlbossceo/tracing"
-rev = "ccc4fbd8238c2d5ba354e61ec17ac610af11401d"
+rev = "3cf1c991e3660785d3855a34245949557db33209"
[patch.crates-io.tracing]
git = "https://github.com/girlbossceo/tracing"
-rev = "ccc4fbd8238c2d5ba354e61ec17ac610af11401d"
+rev = "3cf1c991e3660785d3855a34245949557db33209"
[patch.crates-io.tracing-core]
git = "https://github.com/girlbossceo/tracing"
-rev = "ccc4fbd8238c2d5ba354e61ec17ac610af11401d"
+rev = "3cf1c991e3660785d3855a34245949557db33209"
[patch.crates-io.tracing-log]
git = "https://github.com/girlbossceo/tracing"
-rev = "ccc4fbd8238c2d5ba354e61ec17ac610af11401d"
+rev = "3cf1c991e3660785d3855a34245949557db33209"
# adds a tab completion callback: https://github.com/girlbossceo/rustyline-async/commit/de26100b0db03e419a3d8e1dd26895d170d1fe50
# adds event for CTRL+\: https://github.com/girlbossceo/rustyline-async/commit/67d8c49aeac03a5ef4e818f663eaa94dd7bf339b

View file

@ -0,0 +1,28 @@
# This is the authoritiative configuration of this project's Rust toolchain.
#
# Other files that need upkeep when this changes:
#
# * `Cargo.toml`
# * `flake.nix`
#
# Search in those files for `rust-toolchain.toml` to find the relevant places.
# If you're having trouble making the relevant changes, bug a maintainer.
[toolchain]
channel = "1.84.0"
profile = "minimal"
components = [
# For rust-analyzer
"rust-src",
"rust-analyzer",
# For CI and editors
"rustfmt",
"clippy",
]
targets = [
#"x86_64-apple-darwin",
"x86_64-unknown-linux-gnu",
"x86_64-unknown-linux-musl",
"aarch64-unknown-linux-musl",
#"aarch64-apple-darwin",
]

View file

@ -2,6 +2,7 @@ let
overlays = [ overlays = [
./conduwuit ./conduwuit
./attic ./attic
./vscode.nix
]; ];
importedOverlays = map (m: import m) overlays; importedOverlays = map (m: import m) overlays;
in in

14
overlay/vscode.nix Normal file
View file

@ -0,0 +1,14 @@
final: prev: {
vscode-extensions = prev.vscode-extensions // {
github = prev.vscode-extensions.github // {
codespaces = prev.vscode-utils.buildVscodeMarketplaceExtension {
mktplcRef = {
publisher = "github";
name = "codespaces";
version = "1.17.3";
hash = "sha256-idJFYHJ4yeqpFZBX55Y0v1yfzgqyhS0MrC4yIto7i7w=";
};
};
};
};
}

View file

@ -1,5 +1,5 @@
caddy: caddy:
env: ENC[AES256_GCM,data:uVCkVky5MRRhN+g4f634nBjvpcI5Ldy+eOKXg7eGu9foswTHA1SXDs67+Wuvo/jaPw7Zg67xKZRHnoTon1udQzyfu0T6pmVKfsUPewITYCd+qLTanFz6uVRUHzpUVwjCZNqB8gxNr/BiZ70NG4vQXRjgd3zKFrQYQBr4zSaP2vK1pRdbuQ==,iv:dQBfX4X8huUp2dqY3tEGW+BPZ/XADT10ptt85R7X+AY=,tag:cvMbFjkRHoxxnNfz8dGv5g==,type:str] env: ENC[AES256_GCM,data:XyxcCVT+rwlS7A3xzUgGqpMoLwhfUJo2++zPTgoPt3q6Edt14bYQJsoSJXnKx/lGg/0ilNfEEg8AEnru/Mzx0bWedSdWuZ380l8wlLiucqQThhEBhEJlyd94BMNzhxFdj82w0ejp4oWb5By/WjkFNesvAyxPIo/Ir4S+fTgGpA1iO2Ms8Pdjp00qeXYsK1CfjaXOYlEP+8BxntN2JKLYb8Cgs7dLmHfUwP6gTFKlTukUTtQZYUw336q3TtGy,iv:Ab/E0ljUBxzWlXfAC2BXCYxlgo0ErvKFaubgVjFR3OU=,tag:Yr24/DofYS2lM6f2/1LQ3Q==,type:str]
sops: sops:
kms: [] kms: []
gcp_kms: [] gcp_kms: []
@ -33,8 +33,8 @@ sops:
Q2hBZE1FOHJ3aW5rVmoyK045eG11cmsKFOmP5iWONREZvxu0rM+fKMPQKgnYq5LH Q2hBZE1FOHJ3aW5rVmoyK045eG11cmsKFOmP5iWONREZvxu0rM+fKMPQKgnYq5LH
AKMZFsP7nnUxjdCXEA18sDg4Rf0qp8i3uQK3D6P7417j9ye/YZA4BQ== AKMZFsP7nnUxjdCXEA18sDg4Rf0qp8i3uQK3D6P7417j9ye/YZA4BQ==
-----END AGE ENCRYPTED FILE----- -----END AGE ENCRYPTED FILE-----
lastmodified: "2024-12-17T03:25:37Z" lastmodified: "2025-01-30T17:26:39Z"
mac: ENC[AES256_GCM,data:bhFBLkT2q6HGtTPtHLVZkKZn00Lbm11/u3qSR19lU2E1SsQ7mpukvCqcTxNWtJ+HHth6yJJfgM6XABKq/9/598L2MgGuF3C/GGS3xpjwHh5RyV8t1lV8cqDaZGjGOMGx35lFQ6DoXOreQrtP/f7MKzf+nVNFr1NbTR8YhqR1xDU=,iv:+fjYlbyIyM9nLagrvE+PUhC2pT7QTsTSQX7ELZ7Wuhs=,tag:GWQv6VmIsWwFzb4bUr5CLg==,type:str] mac: ENC[AES256_GCM,data:saoalvnwHsv0CTw/cRZqibnH9oGoZTNwGUT7RePKRa8OwNzbUEzQt+Z1WrmmWoqR+omQXLE+lpOPv6uNYxvAWnIelzCGeBBCMSBxtjlTUsjts7oFo7d9C5SdTIOkzotDxryvjRupb0P7hAmEqcSUKRZipJy5MVR7VXR1XZ4fIPM=,iv:VaP05zj8L2pygi1/M4BnOV3Inf0ssaWMu+aTBkdDMys=,tag:nuZT8GMB4F0T5dHnTvHOhA==,type:str]
pgp: [] pgp: []
unencrypted_suffix: _unencrypted unencrypted_suffix: _unencrypted
version: 3.9.2 version: 3.9.4

View file

@ -0,0 +1,31 @@
garage:
env: ENC[AES256_GCM,data:miNp4SJ9xuMXSEIJYCZFWM96enAh8uwCxv0ySn2Jbp5V4Iso2uZ2R9dXqSS7y60pRq+bbXPYbBxBnmb+fhjvB7TdCLPom9CKSY8zMI7n/p1IE4qUFvzCG4ejV6BIsh/887BjzAx1UNcRG/9eUNcMfTu58wQwKmIzr1iu5pD+IlLHa+0/orpZKssQ2Ba1hMwLOAXp,iv:zgkGikunB4zQ4CfGgEd1DmLgYpEREJhoX4oT/zK3mI8=,tag:ohpZWF/lPHQc010mteJZDw==,type:str]
sops:
kms: []
gcp_kms: []
azure_kv: []
hc_vault: []
age:
- recipient: age1eg6sxflw6l44fp20sl068sampwd95fm0mnh4ssegrhtktgm50ptqcuspyn
enc: |
-----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBIemdMVVE4alZ2MElWeUpj
TjNhL2VYL2dwMmN0VzJxVGwzWHgvbm82QWtjCk1pem5SdzFpR0dRci80emo1VlVu
VWtWMVpoN2M4NUphcTgxeTB6aU83bjAKLS0tIGlJanA1TFBnaE9PTmRnQWVidE53
elRZaFVaZ1VTRU1MbWlqSkJNZG1oRW8K8IupEpJzC0CJGpxSTssiFrQgdHAzCW4I
IlvYdZkUou/6km5OMnsFqhqEqIjAwVuJ08YiNzAv67ZzTG0ThD133A==
-----END AGE ENCRYPTED FILE-----
- recipient: age10h6pg5qdpc4t0rpmksfv788a57f04n83zgqaezkjjn65nkhv547s0vxfdn
enc: |
-----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBiemRZRmF1NWozM1RFS2Z2
bld5V0lTS3V1OW1SU0VaR2IzZjJmbEtJVkhjCnBVKzFYUXYveGdkSTVmbzRldGRo
eVAxWXQ1TzczVjZiQ2NsUEk3YmhGNk0KLS0tIG04d0FDYXF1MU5ab3ZMTmpCUWNa
WTQ3dWs4enQrc2F3K3AvMUQvWEh6RDgKxJl3ftSpIrK+45LzjX9gIy41Lv+bcZsV
7rriUhKAtaCXsQcO6Povif7zJyCROYhC0sgpRhmMKoN76TAH3zxvag==
-----END AGE ENCRYPTED FILE-----
lastmodified: "2025-01-08T20:44:32Z"
mac: ENC[AES256_GCM,data:rVv9sNYb9Fttm5IjonAZBmcrCqC1cAp2sjMJDZ3JMt+YeyiCUI6jsXSGAc3pgP+7vvaTvDvdNwlAa5axxA72omE4eAK+9me0RLI75vA4UGrh3KiB4qrHK6H6qMUFg92uhKFo+uhtxERIV5/HSwbZPBT2R0pbSSQzTKk5U9UuJsY=,iv:CRSEqphlBsHwPvwXlTQui5U4fsXWgWnZ+8KYFAyVRlg=,tag:82mxRsp5uCo235jzJNK8LQ==,type:str]
pgp: []
unencrypted_suffix: _unencrypted
version: 3.9.2

View file

@ -0,0 +1,31 @@
tailscale:
auth: ENC[AES256_GCM,data:7gGiUBRUK25Tp5y/5DDZKOTxKPFFfN1UUeBOdMLLQqobq643MKdJ9imxkKmKFg/FwgLYft/uzdxQGGlE7Q==,iv:HRmd+T1QuTYP8VrX/bZt8dWSwm5rcUvpEMqCMPfxjE4=,tag:PRZn2Pm6yydfEULrYGM6yg==,type:str]
sops:
kms: []
gcp_kms: []
azure_kv: []
hc_vault: []
age:
- recipient: age1eg6sxflw6l44fp20sl068sampwd95fm0mnh4ssegrhtktgm50ptqcuspyn
enc: |
-----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSA2Z1JZZmZMaDQ3UHYvbXYr
c05RaEMxUGJXSGczUDBkL1UxT0hjQ0VNNkJNClFUNmJ5d3gyaHFwMTdNVW9GQ2ly
V3haMkx5Z1B5dmJ0SE4wY0UzMWswQ0EKLS0tIGNpZVo3UmtHcjFZVE5FMmdpOGMx
UFZGb3I1L3FJYVE2VjJ5aTVoZlo4bFUKwH2sPBwuLQXrHmiKYSu4Eut/H2j/2tUW
1y8Eph7l6w3kfhZRRbo6cZ8gcbZNHPSPeAvWf/TpYumiTt1WBt8SMw==
-----END AGE ENCRYPTED FILE-----
- recipient: age10h6pg5qdpc4t0rpmksfv788a57f04n83zgqaezkjjn65nkhv547s0vxfdn
enc: |
-----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBSVXBMTEMrY1NGa1NBSjZP
R04wYUsrdGlVa3FnL1NYVG4xdUdqeHNnM0ZJCmhMSzFoRVFSOFBrQlU3VUtwaU0r
TEtad1B5NGh3OW1oajNvckhJcExrU0kKLS0tIFc5K3JOVTUvSFU1dmQxMUFRZ1o3
em5IemlsM29zVy9GK3RmTlgzVnRpMDAKRatmFgCdoXcypQ+1EDedCuVctl0SFMf4
kjtHrTSpept/y9bpTUy656aPRQ1LvqvfPs7Co1ssC/YWFroDsLgv4w==
-----END AGE ENCRYPTED FILE-----
lastmodified: "2025-01-24T05:26:20Z"
mac: ENC[AES256_GCM,data:GbQrLESUR/x+eLzukOR1FaJsd8zxlrz9dc/2kDBKUYAgI8L4QwLmwRuzpaIJgNLv2PdLTW83oSC8ekxR8fmsap40DpiygcrmPdPUeVFbEPaz7SSvU+DCgB0UX+qNQ9aOQ0BIbeKKOIj3r9enGv2o6DKY8I85n7VXjnGZAmCf1C8=,iv:UrtVqRGwvOpXOH3X3qF6ZF+VwqO0VGt+hFG7r6oUqCg=,tag:TD4mG3t5ORYgAS0GBmA7Eg==,type:str]
pgp: []
unencrypted_suffix: _unencrypted
version: 3.9.3

32
secrets/yt/aws.yaml Normal file
View file

@ -0,0 +1,32 @@
aws:
key_id: ENC[AES256_GCM,data:vxa8IS5zVOStsQaQNoPy36MeCw2KD2Th5tg=,iv:TrPukr/bpkGysf1YigBlXwaCu0H1FM6ivCVQEgnst6A=,tag:yrlcsDkLkH7U2i3JgjDaBA==,type:str]
key_secret: ENC[AES256_GCM,data:R9hFgtylEW1RphrP7/9Hi7HIb7gcQX1WDEVfnUTTzh+/0LM2Rb9CdkaleO8wNlcyYVE/jUKtqdqqrospAJ7+Zw==,iv:3+yCVqH441+oXFLI5usaQdhnE3GFhbJjMsYeRvk8xEw=,tag:STxA32cSdwPBikXyVEP5+Q==,type:str]
sops:
kms: []
gcp_kms: []
azure_kv: []
hc_vault: []
age:
- recipient: age1sy0at69err83qyml2vqu8xvwjccfws447aaadfvacj2qluw3p45s2mtrw8
enc: |
-----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBKaUZKbTVjZ1NEWlE5RzZT
T1dKdkRQajEva0tpRXhxYUlYWmw1b3MwSFZvCmhteVJ2VGhVNnZTZkJlem1OT3dL
dGlQTWdOUlo3TXNOS0wvNlpqVWpZSFEKLS0tIC9DNjY3OW1zWUlRQ1ZEOGlBRk9R
azQxMGhQejQ5M0N1YjFtSW5uVnRCQ3MKtt26G2PxIry/lppOT/NUX8jebEb5NgqO
HuHj7WT51Gtotfgb22VfGeOCaw9+pPYSjdk9WV4z57r7Z/lylALKRw==
-----END AGE ENCRYPTED FILE-----
- recipient: age10h6pg5qdpc4t0rpmksfv788a57f04n83zgqaezkjjn65nkhv547s0vxfdn
enc: |
-----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBPaVIwbExDUjJiVFpHOFJu
dk1SUHc5UDRFUENsbkg2RmQvazdEZ1NKeEhvCjVCNzdwRFN0aUZJL0pVSTI1RUxv
Ymhhc0tsSENVa1VUKzRBZk5IcjEvNFUKLS0tIFpPNlRXOVYyVnpyUmtLMTFqNlZ0
UlYrTExEUVc0dURLR1czN3BnYzZ2VGMKCbAgM50jvs9VciA1Pb/VY+2I4x62LBGe
j7eHkfTFc8Gnk/rZA9/ZJDLFr/FUPMQWK/NVoz6oLjO6oVFXqN6OqA==
-----END AGE ENCRYPTED FILE-----
lastmodified: "2025-01-30T17:45:09Z"
mac: ENC[AES256_GCM,data:uXnJ8DCs1ZZ72PFAmSQpqvVH2UYvRX8AeUC00A6WsgNL9sz6H0b7PwXBn4SucHACwLwilMVKYpFGE1pPMsIgpHxU5coNhvTfth/ChY1KS73LAwrJUAyUoFI3mumPkklj7b/u1CbBfhuhA2QoZVl+d9BGQn5CQu3+BySUmcT+P9k=,iv:H/hUTBDNcsGBP5TA/7U1QMZogZvuoPuEAg/tBCpbf9w=,tag:W7rH84Na/tHPuJlA9tRXEQ==,type:str]
pgp: []
unencrypted_suffix: _unencrypted
version: 3.9.4