Compare changes

Choose any two refs to compare.

+1
.gitignore
···
# balls
result
+
result-*
.direnv/
*.qcow2
+10 -6
creds/sops/koumakan/default.yaml
···
signing_key:
v1: ENC[AES256_GCM,data:Oc1E2MNzUgRZvXm54HmumhomF3M7LIHQl1u/Jta8cdOKmZgB5jSzv8aUeaKa1SOGCtIfVSbsJb7ijKTULtrWOkge6SBtiNYkOAKlvDGXWhChAO4GRFrMyeJgjLFWgY7+OKFicNQwU3uLPA==,iv:j25ZwWmzt7r53CVxJkGia8tSpIUQD7UecQElM+JDJ3w=,tag:zxSvJV3qfius+QwBYbgNrw==,type:str]
s3:
-
key_id: ENC[AES256_GCM,data:ONhytMHluXYgZw0hErBid5PmD+o=,iv:j6NPjLPIPN3rNs/RSDoqhYqGaZ11ZZwyM3Q4SoXviKY=,tag:oc+L6+TwAy/OLKQVfZsdww==,type:str]
-
key_secret: ENC[AES256_GCM,data:41QIwGRJP3Pw2fsYgZIG3wk6GLCy3EeJszwM+kdGrjriIfCXs6D45g==,iv:sWMgzhIh9VnBbiuv1jg+ZIfolHtuaxamthp3OKwOVgc=,tag:JLIHG5f4tdjaJxP5Il+nFA==,type:str]
+
key_id: ENC[AES256_GCM,data:lC3XCy3hKsMoJORqYO16Y12GpuTQu40gVhY=,iv:MZkDjjvWCCNjGtKlzBDfa7lXLC08HU/Q+2oNHkbaNok=,tag:jLS45EwjUg55/XjH6QRyPw==,type:str]
+
key_secret: ENC[AES256_GCM,data:YHaIympdF4eJ/e1APFp/9+3fgNRwqNP/6tATkXUYWW3yIQQof0/wfipJYkOTnBMK06/F6hQdYMLX5AswaXpfog==,iv:x+iY6uli9wn9WskfhAB0JCApj0XoD5G4I9RJWxkGf9o=,tag:5Vg9CJkzD0OR4vaTYwoMEQ==,type:str]
wastebasket:
key: ENC[AES256_GCM,data:tvlRsZkX+jrJWJXXxBcFnZtweaiK6V+1YV6evN2ppu14I7h4vPOOTpqav9lvzol5y8PwJ98Uw1kXFUZWTZfUda204aK1G0o4n8OS/Q403xrWzouusUI+06Jm91L75a9+/M3ql5/sQOtR0/gTMAN/10gEcTSJGnCQQVy9MDe76ppkmXnp+Bk919S8qhh3kIJ2brRnZ98RmejpJsJKG/2D10e4k9pA8uiN4vhhWg==,iv:CBzRc7Oltetqo29M29cuUr6aI/Hu5tHkbRLInDFCRzc=,tag:m7GR8ZG7ymFhQRQfQIdodw==,type:str]
zipline:
core:
secret: ENC[AES256_GCM,data:9Yro0dKRoW/q3nAJeBi2/DBVzq2l9Q8cNjg+ZlDf/ssn1oDNnxeBtW6C+VpChUssP59behc7NQAdEH1XnhE/5YITiRw0SpMclLBDO74KmSmfhoGvQBDWU0rRQqHoSg/8WpDJcVUs9iIU2LzUoKf2ZAPqRzS9IdegaKQA8l2djsgW1Io6fGeUAH7UdLh+QTYhRzhga0vRInDcRbm9dzrRW8rB41ff9Tsm++hYCA==,iv:loOALkfZFg0sd9t0k6XR5ckV0ix5Oda9X3H+7bnA2xs=,tag:NL+gyDxW5fS0TmYtiB6HLw==,type:str]
s3:
-
access_key: ENC[AES256_GCM,data:dwV+xA+2MYAizNMuHZptqDFv62s=,iv:MDmcEGAA3gdhDBA4ie4A5nlBwJElek/7qSvzFrGP9FI=,tag:pDIU8LTNagJrVwPw700XQQ==,type:str]
-
access_secret: ENC[AES256_GCM,data:ID9NA21++yUNmF/UGWudyxXuZXbMPfViGnariYe8H06aKZias9OK2A==,iv:PMXdLwkz+JpBJ0ZrVwaUdcqDxew/+Yv9AbVrX1EUfWE=,tag:4puu4oyZVGdfvaZpkdKFFQ==,type:str]
+
access_key: ENC[AES256_GCM,data:G1aUG9dvjedUTcSVytuaR/ZevFtoiEokEd0=,iv:N7rBB3O6l36IaAk5tAKRCNxxRlvKmj52nbIqFFirwDQ=,tag:3vt5Sj2yTie8K7Qsc6jY4g==,type:str]
+
access_secret: ENC[AES256_GCM,data:6oFbU/0g+P6MTmvenjmjshet1wZ0FPfA5PYvHLZqIM14IdAntIo5rdFuntgxXDjPeFLiq6tEzMfqX/cONITXKg==,iv:fVoxMAj+xSOlp3MWtQ48TA62+L4UGxMFnJUIyFaYYxY=,tag:/1gV4TfE/kOV7CvRbpqPUw==,type:str]
minio:
root_user: ENC[AES256_GCM,data:q+w4FgnCA2QxWsxM,iv:NojzSMmZ2yq7VyPn7fOYauLpgMOE0NGCyTUQ6slGN2Q=,tag:5FfjO4KH8XfLuymxDgV2iA==,type:str]
root_pass: ENC[AES256_GCM,data:oh/VQDU1dR9YLribrhZeVJxMoY9/7Ri8bloM650j6Ut/vHF6BB4NYY94RngkBYRVkHplF9oKx+Ey13kMyIPvC+EvPczoWKCHJ4pJqq3GgWigFp7ufUDdvY4hBjW7SU7fk0wYOjZYH2JlLqjmU0MsVKSqt66Rq9Si0MU7VACNrJzYDe6KbCbL/YT3DmTvBpPR6ysLCE525rH7Tg2LVyn775Si+vo+KGC5gqGMlw==,iv:8pbJMeuDIcvkI8Uda30i8ote/PRUSSAmaua22gQmbHc=,tag:6hNvVytKXbjrKZMKkQ5pEA==,type:str]
···
pocket-id:
encryption_key: ENC[AES256_GCM,data:aSWSWrd1dR6NpwLJE3Je4j6bnBMq7QFD8VX6u4XIKqFq3shwuM/fZitblSfVX92UdDFZnsZyRiAf57rH/9PB+saoOcdSUkC/rTYO0iGFLQLcOiSMfBdyKA==,iv:ZlCrKpT8LrcqDK7uCr1m8vp+reCdwcG6KhxFQsB+KqY=,tag:+MvOEXBnUP5QleY5f6kbuA==,type:str]
maxmind_key: ENC[AES256_GCM,data:KfGuV+GbrZhDSDovV7eHu7nffOB6j+z6wsXQxlaEB/7tvwucn2wbxA==,iv:+t5nNpRE/x1cSZ+Ee6fHj5x1vKqTP/6NGqiUlhdzTxs=,tag://rUceu5SeIpgKGiP6+Pkw==,type:str]
+
garage:
+
rpc_secret: ENC[AES256_GCM,data:SYD8U1FLutpeX/zE8wWgUf3MPDQuS2rEx6loF8m0U1rolz6S7ynt98tUh04t1cFGon405bsCCqJeSesIgBAWjA==,iv:Vde1d+ap/hVRxPs3hgB+avS3s2cWRDGilqI7Odktgho=,tag:t9co728BfgQ78tfG8V93JA==,type:str]
+
admin_token: ENC[AES256_GCM,data:in/UjRG4jehvI0kjfD3TvheWN+7NNmU4GRuXEqBZocyd1E0NqP6DKxhpG6M=,iv:yTA4dQd36ou3gs6UGrsuONJzQ8DNTIsOi765GZIIaQI=,tag:HD401PZLEOaPNszV/04jJQ==,type:str]
+
metrics_token: ENC[AES256_GCM,data:BZ3TN+ubxwHNi8QZP+TmdVgcL88UzwDsv8Lema2ClxqYRZFddaQg2RIHHIM=,iv:k7xyeyzZiMK3R/Gr/f+8uN8zFOUJaaQ99AILoKMYa/c=,tag:mJhPxEjMKOjb/Z0KnGzN4w==,type:str]
sops:
age:
- recipient: age1l3qxt6630dzesdclfm3eqgw3uuhwj09dh6typwlwr6clcv0qhfrqgtj2fk
···
QUlVNExmVGd2QXJwVmRGa0JvMmtocEUK7Zo0Mtj3oZm5Etp61cGbLs+2XP97pjR6
rtfHnuxceJj0+yBugfwgFD1TGJ+6M7z5YCwTx+GAvbPDrmSm2TGrwg==
-----END AGE ENCRYPTED FILE-----
-
lastmodified: "2025-10-13T08:42:55Z"
-
mac: ENC[AES256_GCM,data:ocIWuopOoiUMxc6TMCxzBuicp5rzqX9oE9pXaIbFkRxjXwmskUwS8s00Xzqgo1K60+tnBFFK+zma+jMd7fKeBtkUqD00dgXMnLlUNmUt2s+Mq34nCt3hiNSOcqQHjBBIeSEiy/gqn1umdnCkV/zLBEP10u/EOdJ1Dlb1vA3gvqs=,iv:xS9HBMGmATAH/IxFide0tV4lTZ1HwjBTm+Be+4exczo=,tag:JQTIYw+PQ03mx5JE8rNPsg==,type:str]
+
lastmodified: "2025-10-31T06:22:39Z"
+
mac: ENC[AES256_GCM,data:cRRtc1MzZ+1+lzWRQA/IIVSyQgIO2b0FZ+Xf/Riu4ry8c9FeqLCIrOJzYUUYA4h3z+KQLKL8mgYKJ8xrhMOEmOBhmtEFhyOJp9IdQeEjjQyNy2uRnJRrUtJpTe95LSKBV1At/hPZMcwCSx6h7zDTI7sBWsNCxkMSp/Zcpr1AyZI=,iv:lc19cb+rUMcTZbjxdlLXNE2uWKvwHIK8p7FuPXfvZUo=,tag:U48mLo/y+zjWT+p6/L+eBg==,type:str]
unencrypted_suffix: _unencrypted
version: 3.11.0
+145 -158
flake.lock
···
{
"nodes": {
+
"actor-typeahead-src": {
+
"flake": false,
+
"locked": {
+
"lastModified": 1762835797,
+
"narHash": "sha256-heizoWUKDdar6ymfZTnj3ytcEv/L4d4fzSmtr0HlXsQ=",
+
"ref": "refs/heads/main",
+
"rev": "677fe7f743050a4e7f09d4a6f87bbf1325a06f6b",
+
"revCount": 6,
+
"type": "git",
+
"url": "https://tangled.org/@jakelazaroff.com/actor-typeahead"
+
},
+
"original": {
+
"type": "git",
+
"url": "https://tangled.org/@jakelazaroff.com/actor-typeahead"
+
}
+
},
"arion": {
"inputs": {
"flake-parts": "flake-parts",
···
]
},
"locked": {
-
"lastModified": 1759632323,
-
"narHash": "sha256-TzLTfXxhOkR/8oOoVEAYQWb81ADGHdKsQXGicC7kR+M=",
+
"lastModified": 1765839957,
+
"narHash": "sha256-c2k30kehMWLEQpO41OhyDruj1S7RsyBlgx4yHlXKVa4=",
"owner": "hercules-ci",
"repo": "arion",
-
"rev": "24658a03be2d1a6e1e02c01524775d960a82309c",
+
"rev": "9ff7acc2c00a40ecf24894592ea5019439bb9e13",
"type": "github"
},
"original": {
···
"nixpkgs": "nixpkgs"
},
"locked": {
-
"lastModified": 1754766435,
-
"narHash": "sha256-DT8CQoqV2haX+Fo16WXAt9gKCSXOZH9ZfnV++Br+qcM=",
+
"lastModified": 1763111355,
+
"narHash": "sha256-iUTS8wV7tCo7A456Ro6ZOJ6Bbk0V5Is3zPd+BmJHJ/Q=",
"owner": "catppuccin",
"repo": "nix",
-
"rev": "e339d6d822fa81c39d1ab89694b4ee2cfc830c9a",
+
"rev": "5375a9d80c4b2a835c7203920f997f3ea4224423",
"type": "github"
},
"original": {
···
},
"crane": {
"locked": {
-
"lastModified": 1731098351,
-
"narHash": "sha256-HQkYvKvaLQqNa10KEFGgWHfMAbWBfFp+4cAgkut+NNE=",
+
"lastModified": 1765145449,
+
"narHash": "sha256-aBVHGWWRzSpfL++LubA0CwOOQ64WNLegrYHwsVuVN7A=",
"owner": "ipetkov",
"repo": "crane",
-
"rev": "ef80ead953c1b28316cc3f8613904edc2eb90c28",
+
"rev": "69f538cdce5955fcd47abfed4395dc6d5194c1c5",
"type": "github"
},
"original": {
···
"flake-compat": {
"flake": false,
"locked": {
-
"lastModified": 1747046372,
-
"narHash": "sha256-CIVLLkVgvHYbgI2UpXvIIBJ12HWgX+fjA8Xf8PUmqCY=",
+
"lastModified": 1761588595,
+
"narHash": "sha256-XKUZz9zewJNUj46b4AJdiRZJAvSZ0Dqj2BNfXvFlJC4=",
"owner": "edolstra",
"repo": "flake-compat",
-
"rev": "9100a0f413b0c601e0533d1d94ffd501ce2e7885",
+
"rev": "f387cd2afec9419c8ee37694406ca490c3f34ee5",
"type": "github"
},
"original": {
···
"flake-compat_2": {
"flake": false,
"locked": {
-
"lastModified": 1696426674,
-
"narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=",
+
"lastModified": 1761588595,
+
"narHash": "sha256-XKUZz9zewJNUj46b4AJdiRZJAvSZ0Dqj2BNfXvFlJC4=",
"owner": "edolstra",
"repo": "flake-compat",
-
"rev": "0f9255e01c2351cc7d116c072cb317785dd33b33",
+
"rev": "f387cd2afec9419c8ee37694406ca490c3f34ee5",
"type": "github"
},
"original": {
···
"flake-compat_3": {
"flake": false,
"locked": {
-
"lastModified": 1747046372,
-
"narHash": "sha256-CIVLLkVgvHYbgI2UpXvIIBJ12HWgX+fjA8Xf8PUmqCY=",
+
"lastModified": 1761588595,
+
"narHash": "sha256-XKUZz9zewJNUj46b4AJdiRZJAvSZ0Dqj2BNfXvFlJC4=",
"owner": "edolstra",
"repo": "flake-compat",
-
"rev": "9100a0f413b0c601e0533d1d94ffd501ce2e7885",
+
"rev": "f387cd2afec9419c8ee37694406ca490c3f34ee5",
"type": "github"
},
"original": {
···
]
},
"locked": {
-
"lastModified": 1759362264,
-
"narHash": "sha256-wfG0S7pltlYyZTM+qqlhJ7GMw2fTF4mLKCIVhLii/4M=",
+
"lastModified": 1763759067,
+
"narHash": "sha256-LlLt2Jo/gMNYAwOgdRQBrsRoOz7BPRkzvNaI/fzXi2Q=",
"owner": "hercules-ci",
"repo": "flake-parts",
-
"rev": "758cf7296bee11f1706a574c77d072b8a7baa881",
+
"rev": "2cccadc7357c0ba201788ae99c4dfa90728ef5e0",
"type": "github"
},
"original": {
···
"flake-parts_2": {
"inputs": {
"nixpkgs-lib": [
-
"lanzaboote",
-
"nixpkgs"
-
]
-
},
-
"locked": {
-
"lastModified": 1730504689,
-
"narHash": "sha256-hgmguH29K2fvs9szpq2r3pz2/8cJd2LPS+b4tfNFCwE=",
-
"owner": "hercules-ci",
-
"repo": "flake-parts",
-
"rev": "506278e768c2a08bec68eb62932193e341f55c90",
-
"type": "github"
-
},
-
"original": {
-
"owner": "hercules-ci",
-
"repo": "flake-parts",
-
"type": "github"
-
}
-
},
-
"flake-parts_3": {
-
"inputs": {
-
"nixpkgs-lib": [
"mystia",
"nix-update-soopy",
"nixpkgs"
···
"systems": "systems_2"
},
"locked": {
-
"lastModified": 1694529238,
-
"narHash": "sha256-zsNZZGTGnMOf9YpHKJqMSsa0dXbfmxeoJ7xHlrt+xmY=",
+
"lastModified": 1731533236,
+
"narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=",
"owner": "numtide",
"repo": "flake-utils",
-
"rev": "ff7b65b44d01cf9ba6a71320833626af21126384",
+
"rev": "11707dc2f618dd54ca8739b309ec4fc024de578b",
"type": "github"
},
"original": {
···
"inputs": {
"flake-compat": "flake-compat",
"flake-utils": "flake-utils",
+
"home-manager": "home-manager",
"nixpkgs": "nixpkgs_2",
"zig": "zig",
"zon2nix": "zon2nix"
},
"locked": {
-
"lastModified": 1761316130,
-
"narHash": "sha256-q+qyjfdtiPWrT50ixRwthL0ONLjC4O7F2au/71qeAow=",
+
"lastModified": 1767049078,
+
"narHash": "sha256-BZ62cvoAvq74l82PB3gqTgg+ltz47FViC0N3RbWYxys=",
"owner": "ghostty-org",
"repo": "ghostty",
-
"rev": "3f75c66e8395d7389f05d360d89af567dcd22cba",
+
"rev": "1fa6641a6adf3936f6c8c81e14b5821d2de1a81b",
"type": "github"
},
"original": {
···
"inputs": {
"nixpkgs": [
"lanzaboote",
-
"pre-commit-hooks-nix",
+
"pre-commit",
"nixpkgs"
]
},
···
]
},
"locked": {
-
"lastModified": 1754078208,
-
"narHash": "sha256-YVoIFDCDpYuU3riaDEJ3xiGdPOtsx4sR5eTzHTytPV8=",
+
"lastModified": 1763982521,
+
"narHash": "sha256-ur4QIAHwgFc0vXiaxn5No/FuZicxBr2p0gmT54xZkUQ=",
"owner": "nix-community",
"repo": "gomod2nix",
-
"rev": "7f963246a71626c7fc70b431a315c4388a0c95cf",
+
"rev": "02e63a239d6eabd595db56852535992c898eba72",
"type": "github"
},
"original": {
···
"home-manager": {
"inputs": {
"nixpkgs": [
+
"ghostty",
"nixpkgs"
]
},
"locked": {
-
"lastModified": 1758463745,
-
"narHash": "sha256-uhzsV0Q0I9j2y/rfweWeGif5AWe0MGrgZ/3TjpDYdGA=",
+
"lastModified": 1755776884,
+
"narHash": "sha256-CPM7zm6csUx7vSfKvzMDIjepEJv1u/usmaT7zydzbuI=",
"owner": "nix-community",
"repo": "home-manager",
-
"rev": "3b955f5f0a942f9f60cdc9cacb7844335d0f21c3",
+
"rev": "4fb695d10890e9fc6a19deadf85ff79ffb78da86",
"type": "github"
},
"original": {
···
"type": "github"
}
},
+
"home-manager_2": {
+
"inputs": {
+
"nixpkgs": [
+
"nixpkgs"
+
]
+
},
+
"locked": {
+
"lastModified": 1767024057,
+
"narHash": "sha256-B1aycRjMRvb6QOGbnqDhiDzZwMebj5jxZ5qyJzaKvpI=",
+
"owner": "nix-community",
+
"repo": "home-manager",
+
"rev": "34578a2fdfce4257ce5f5baf6e7efbd4e4e252b1",
+
"type": "github"
+
},
+
"original": {
+
"owner": "nix-community",
+
"ref": "release-25.11",
+
"repo": "home-manager",
+
"type": "github"
+
}
+
},
"htmx-src": {
"flake": false,
"locked": {
···
"inputs": {
"nix": "nix",
"nix-eval-jobs": "nix-eval-jobs",
-
"nixpkgs": "nixpkgs_4"
+
"nixpkgs": "nixpkgs_3"
},
"locked": {
-
"lastModified": 1760595422,
-
"narHash": "sha256-JMC6cX8dk5MwZSHQ8O3nrYaqXcGHi2xciBgfI45Z/KE=",
+
"lastModified": 1764105837,
+
"narHash": "sha256-odn4JAamENIUa+KfWCDi1BxM02TOmvhxyEdFLZrV+/4=",
"owner": "NixOS",
"repo": "hydra",
-
"rev": "0414ae64ebeea4ca0121515bdff42d7a3869862b",
+
"rev": "34ff66a460c21ee69d840c8c896d067405ba4a3e",
"type": "github"
},
"original": {
···
"lastModified": 1731402384,
"narHash": "sha256-OwUmrPfEehLDz0fl2ChYLK8FQM2p0G1+EMrGsYEq+6g=",
"type": "tarball",
-
"url": "https://github.com/IBM/plex/releases/download/@ibm/plex-mono@1.1.0/ibm-plex-mono.zip"
+
"url": "https://github.com/IBM/plex/releases/download/@ibm%2Fplex-mono@1.1.0/ibm-plex-mono.zip"
},
"original": {
"type": "tarball",
-
"url": "https://github.com/IBM/plex/releases/download/@ibm/plex-mono@1.1.0/ibm-plex-mono.zip"
+
"url": "https://github.com/IBM/plex/releases/download/@ibm%2Fplex-mono@1.1.0/ibm-plex-mono.zip"
}
},
"indigo": {
···
"lanzaboote": {
"inputs": {
"crane": "crane",
-
"flake-compat": "flake-compat_2",
-
"flake-parts": "flake-parts_2",
"nixpkgs": [
"nixpkgs"
],
-
"pre-commit-hooks-nix": "pre-commit-hooks-nix",
+
"pre-commit": "pre-commit",
"rust-overlay": "rust-overlay"
},
"locked": {
-
"lastModified": 1737639419,
-
"narHash": "sha256-AEEDktApTEZ5PZXNDkry2YV2k6t0dTgLPEmAZbnigXU=",
+
"lastModified": 1765382359,
+
"narHash": "sha256-RJmgVDzjRI18BWVogG6wpsl1UCuV6ui8qr4DJ1LfWZ8=",
"owner": "nix-community",
"repo": "lanzaboote",
-
"rev": "a65905a09e2c43ff63be8c0e86a93712361f871e",
+
"rev": "e8c096ade12ec9130ff931b0f0e25d2f1bc63607",
"type": "github"
},
"original": {
"owner": "nix-community",
-
"ref": "v0.4.2",
+
"ref": "v1.0.0",
"repo": "lanzaboote",
"type": "github"
}
···
"inputs": {
"flake-compat": "flake-compat_3",
"nix-update-soopy": "nix-update-soopy",
-
"nixpkgs": "nixpkgs_5",
+
"nixpkgs": "nixpkgs_4",
"treefmt-nix": "treefmt-nix_2"
},
"locked": {
-
"lastModified": 1761292967,
-
"narHash": "sha256-JINYzhaU4tm8QY0frigjDq6kC+A1Or2in00etgOt0vE=",
+
"lastModified": 1765558006,
+
"narHash": "sha256-8o8J6YJgx7ZLZJfXlKL/upDyGuRFoTOTKeaLT4ZgUHw=",
"owner": "soopyc",
"repo": "mystia",
-
"rev": "aebe43cf8c2902cf9cf0a7b3959cf02ee9d7a1f1",
+
"rev": "5b177c1b32e2f671c1b4b92f0d71ec2a6a55fa9a",
"type": "github"
},
"original": {
···
]
},
"locked": {
-
"lastModified": 1760846226,
-
"narHash": "sha256-xmU8kAsRprJiTGBTaGrwmjBP3AMA9ltlrxHKFuy5JWc=",
+
"lastModified": 1765267181,
+
"narHash": "sha256-d3NBA9zEtBu2JFMnTBqWj7Tmi7R5OikoU2ycrdhQEws=",
"owner": "nix-community",
"repo": "nix-index-database",
-
"rev": "5024e1901239a76b7bf94a4cd27f3507e639d49e",
+
"rev": "82befcf7dc77c909b0f2a09f5da910ec95c5b78f",
"type": "github"
},
"original": {
···
},
"nix-update-soopy": {
"inputs": {
-
"flake-parts": "flake-parts_3",
+
"flake-parts": "flake-parts_2",
"nixpkgs": [
"mystia",
"nixpkgs"
···
},
"nixos-hardware": {
"locked": {
-
"lastModified": 1760427889,
-
"narHash": "sha256-OqvmnwlfTU+/EoU8kJSPWitQuHBzswAPrxshw9duKi4=",
+
"lastModified": 1767105924,
+
"narHash": "sha256-Sr2uqrc5VVFm5zIqJw87MtB2skLcIQGMywmtjFecWn0=",
"owner": "soopyc",
"repo": "nixos-hardware",
-
"rev": "782e18a837d51d2035815a128a242f587e3bbd60",
+
"rev": "cd2b93bdcf720c6b68522eafd5aa1347a25a41b0",
"type": "github"
},
"original": {
···
"original": {
"owner": "NixOS",
"ref": "nixos-25.05",
-
"repo": "nixpkgs",
-
"type": "github"
-
}
-
},
-
"nixpkgs-stable": {
-
"locked": {
-
"lastModified": 1730741070,
-
"narHash": "sha256-edm8WG19kWozJ/GqyYx2VjW99EdhjKwbY3ZwdlPAAlo=",
-
"owner": "NixOS",
-
"repo": "nixpkgs",
-
"rev": "d063c1dd113c91ab27959ba540c0d9753409edf3",
-
"type": "github"
-
},
-
"original": {
-
"owner": "NixOS",
-
"ref": "nixos-24.05",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs_2": {
"locked": {
-
"lastModified": 315532800,
-
"narHash": "sha256-sV6pJNzFkiPc6j9Bi9JuHBnWdVhtKB/mHgVmMPvDFlk=",
-
"rev": "82c2e0d6dde50b17ae366d2aa36f224dc19af469",
+
"lastModified": 1763191728,
+
"narHash": "sha256-gI9PpaoX4/f28HkjcTbFVpFhtOxSDtOEdFaHZrdETe0=",
+
"rev": "1d4c88323ac36805d09657d13a5273aea1b34f0c",
"type": "tarball",
-
"url": "https://releases.nixos.org/nixpkgs/nixpkgs-25.11pre877938.82c2e0d6dde5/nixexprs.tar.xz"
+
"url": "https://releases.nixos.org/nixpkgs/nixpkgs-25.11pre896415.1d4c88323ac3/nixexprs.tar.xz"
},
"original": {
"type": "tarball",
···
},
"nixpkgs_3": {
"locked": {
-
"lastModified": 1758360447,
-
"narHash": "sha256-XDY3A83bclygHDtesRoaRTafUd80Q30D/Daf9KSG6bs=",
-
"rev": "8eaee110344796db060382e15d3af0a9fc396e0e",
-
"type": "tarball",
-
"url": "https://releases.nixos.org/nixos/unstable/nixos-25.11pre864002.8eaee1103447/nixexprs.tar.xz"
-
},
-
"original": {
-
"type": "tarball",
-
"url": "https://channels.nixos.org/nixos-unstable/nixexprs.tar.xz"
-
}
-
},
-
"nixpkgs_4": {
-
"locked": {
-
"lastModified": 1759652726,
-
"narHash": "sha256-2VjnimOYDRb3DZHyQ2WH2KCouFqYm9h0Rr007Al/WSA=",
+
"lastModified": 1764020296,
+
"narHash": "sha256-6zddwDs2n+n01l+1TG6PlyokDdXzu/oBmEejcH5L5+A=",
"owner": "NixOS",
"repo": "nixpkgs",
-
"rev": "06b2985f0cc9eb4318bf607168f4b15af1e5e81d",
+
"rev": "a320ce8e6e2cc6b4397eef214d202a50a4583829",
"type": "github"
},
"original": {
"owner": "NixOS",
-
"ref": "nixos-25.05-small",
+
"ref": "nixos-25.11-small",
"repo": "nixpkgs",
"type": "github"
}
},
-
"nixpkgs_5": {
+
"nixpkgs_4": {
"locked": {
-
"lastModified": 1761114652,
-
"narHash": "sha256-f/QCJM/YhrV/lavyCVz8iU3rlZun6d+dAiC3H+CDle4=",
+
"lastModified": 1763966396,
+
"narHash": "sha256-6eeL1YPcY1MV3DDStIDIdy/zZCDKgHdkCmsrLJFiZf0=",
"owner": "NixOS",
"repo": "nixpkgs",
-
"rev": "01f116e4df6a15f4ccdffb1bcd41096869fb385c",
+
"rev": "5ae3b07d8d6527c42f17c876e404993199144b6a",
"type": "github"
},
"original": {
···
"type": "indirect"
}
},
-
"nixpkgs_6": {
+
"nixpkgs_5": {
"locked": {
-
"lastModified": 1761301304,
-
"narHash": "sha256-/UR943qCkSDpSJrABtcHn56cglxJoX45ezW1LtEHpUw=",
-
"rev": "c8aa8cc00a5cb57fada0851a038d35c08a36a2bb",
+
"lastModified": 1766885793,
+
"narHash": "sha256-3wE9FvGp15AXnwNsGH8gs+i/j/25EBvIoJapquYvB6I=",
+
"rev": "9ef261221d1e72399f2036786498d78c38185c46",
"type": "tarball",
-
"url": "https://releases.nixos.org/nixos/25.05/nixos-25.05.811621.c8aa8cc00a5c/nixexprs.tar.xz"
+
"url": "https://releases.nixos.org/nixos/25.11/nixos-25.11.2679.9ef261221d1e/nixexprs.tar.xz"
},
"original": {
"type": "tarball",
-
"url": "https://nixpkgs.dev/channel/nixos-25.05"
+
"url": "https://nixpkgs.dev/channel/nixos-25.11"
}
},
-
"pre-commit-hooks-nix": {
+
"pre-commit": {
"inputs": {
-
"flake-compat": [
-
"lanzaboote",
-
"flake-compat"
-
],
+
"flake-compat": "flake-compat_2",
"gitignore": "gitignore",
"nixpkgs": [
"lanzaboote",
"nixpkgs"
-
],
-
"nixpkgs-stable": "nixpkgs-stable"
+
]
},
"locked": {
-
"lastModified": 1731363552,
-
"narHash": "sha256-vFta1uHnD29VUY4HJOO/D6p6rxyObnf+InnSMT4jlMU=",
+
"lastModified": 1765016596,
+
"narHash": "sha256-rhSqPNxDVow7OQKi4qS5H8Au0P4S3AYbawBSmJNUtBQ=",
"owner": "cachix",
"repo": "pre-commit-hooks.nix",
-
"rev": "cd1af27aa85026ac759d5d3fccf650abe7e1bbf0",
+
"rev": "548fc44fca28a5e81c5d6b846e555e6b9c2a5a3c",
"type": "github"
},
"original": {
···
"arion": "arion",
"catppuccin": "catppuccin",
"ghostty": "ghostty",
-
"home-manager": "home-manager",
+
"home-manager": "home-manager_2",
"hydra": "hydra",
"knotserver-module": "knotserver-module",
"lanzaboote": "lanzaboote",
"mystia": "mystia",
"nix-index-database": "nix-index-database",
"nixos-hardware": "nixos-hardware",
-
"nixpkgs": "nixpkgs_6",
+
"nixpkgs": "nixpkgs_5",
"sops-nix": "sops-nix",
"tangled-core": "tangled-core",
"treefmt-nix": "treefmt-nix_3",
···
]
},
"locked": {
-
"lastModified": 1731897198,
-
"narHash": "sha256-Ou7vLETSKwmE/HRQz4cImXXJBr/k9gp4J4z/PF8LzTE=",
+
"lastModified": 1765075567,
+
"narHash": "sha256-KFDCdQcHJ0hE3Nt5Gm5enRIhmtEifAjpxgUQ3mzSJpA=",
"owner": "oxalica",
"repo": "rust-overlay",
-
"rev": "0be641045af6d8666c11c2c40e45ffc9667839b5",
+
"rev": "769156779b41e8787a46ca3d7d76443aaf68be6f",
"type": "github"
},
"original": {
···
]
},
"locked": {
-
"lastModified": 1760998189,
-
"narHash": "sha256-ee2e1/AeGL5X8oy/HXsZQvZnae6XfEVdstGopKucYLY=",
+
"lastModified": 1766894905,
+
"narHash": "sha256-pn8AxxfajqyR/Dmr1wnZYdUXHgM3u6z9x0Z1Ijmz2UQ=",
"owner": "Mic92",
"repo": "sops-nix",
-
"rev": "5a7d18b5c55642df5c432aadb757140edfeb70b3",
+
"rev": "61b39c7b657081c2adc91b75dd3ad8a91d6f07a7",
"type": "github"
},
"original": {
···
},
"tangled-core": {
"inputs": {
+
"actor-typeahead-src": "actor-typeahead-src",
"flake-compat": "flake-compat_4",
"gomod2nix": "gomod2nix",
"htmx-src": "htmx-src",
···
"sqlite-lib-src": "sqlite-lib-src"
},
"locked": {
-
"lastModified": 1761152151,
-
"narHash": "sha256-CEIJqCphXGAt1zzc/Q316G+sfYmpCtJ9ZVWNoXa1mk4=",
+
"lastModified": 1767063361,
+
"narHash": "sha256-MyxjxAfOw6LgPGbv/m/am5E080jtc+FunlYFu5HIVUU=",
"ref": "refs/heads/master",
-
"rev": "0a2ae70c248e8b880b6c109e3af8eddc0d69212b",
-
"revCount": 1551,
+
"rev": "4bdc9dfe9bb5ed8f5dfea30b9a45bc93b1430535",
+
"revCount": 1779,
"type": "git",
"url": "https://tangled.org/@tangled.sh/core"
},
···
]
},
"locked": {
-
"lastModified": 1760945191,
-
"narHash": "sha256-ZRVs8UqikBa4Ki3X4KCnMBtBW0ux1DaT35tgsnB1jM4=",
+
"lastModified": 1762938485,
+
"narHash": "sha256-AlEObg0syDl+Spi4LsZIBrjw+snSVU4T8MOeuZJUJjM=",
"owner": "numtide",
"repo": "treefmt-nix",
-
"rev": "f56b1934f5f8fcab8deb5d38d42fd692632b47c2",
+
"rev": "5b4ee75aeefd1e2d5a1cc43cf6ba65eba75e83e4",
"type": "github"
},
"original": {
···
]
},
"locked": {
-
"lastModified": 1761311587,
-
"narHash": "sha256-Msq86cR5SjozQGCnC6H8C+0cD4rnx91BPltZ9KK613Y=",
+
"lastModified": 1767086983,
+
"narHash": "sha256-l4c8HQkgsB15BUZI1SHLAZHQ7822iIkJtOsdIuXIO4s=",
"owner": "numtide",
"repo": "treefmt-nix",
-
"rev": "2eddae033e4e74bf581c2d1dfa101f9033dbd2dc",
+
"rev": "c9eb5bb179067ddced348aca023a3fbf8b5832c5",
"type": "github"
},
"original": {
···
]
},
"locked": {
-
"lastModified": 1760401936,
-
"narHash": "sha256-/zj5GYO5PKhBWGzbHbqT+ehY8EghuABdQ2WGfCwZpCQ=",
+
"lastModified": 1763295135,
+
"narHash": "sha256-sGv/NHCmEnJivguGwB5w8LRmVqr1P72OjS+NzcJsssE=",
"owner": "mitchellh",
"repo": "zig-overlay",
-
"rev": "365085b6652259753b598d43b723858184980bbe",
+
"rev": "64f8b42cfc615b2cf99144adf2b7728c7847c72a",
"type": "github"
},
"original": {
···
},
"zon2nix": {
"inputs": {
-
"nixpkgs": "nixpkgs_3"
+
"nixpkgs": [
+
"ghostty",
+
"nixpkgs"
+
]
},
"locked": {
"lastModified": 1758405547,
+4 -4
flake.nix
···
inputs = {
mystia.url = "github:soopyc/mystia";
# nixpkgs.follows = "mystia/nixpkgs";
-
nixpkgs.url = "https://nixpkgs.dev/channel/nixos-25.05";
+
nixpkgs.url = "https://nixpkgs.dev/channel/nixos-25.11";
nixos-hardware.url = "github:soopyc/nixos-hardware/apple-t2-updates";
-
catppuccin.url = "github:catppuccin/nix/release-25.05";
+
catppuccin.url = "github:catppuccin/nix/release-25.05"; # TODO
hydra.url = "github:NixOS/hydra";
ghostty.url = "github:ghostty-org/ghostty";
···
home-manager = {
# sync with nixpkgs!
-
url = "github:nix-community/home-manager/release-25.05";
+
url = "github:nix-community/home-manager/release-25.11";
inputs.nixpkgs.follows = "nixpkgs";
};
···
};
lanzaboote = {
-
url = "github:nix-community/lanzaboote/v0.4.2";
+
url = "github:nix-community/lanzaboote/v1.0.0";
inputs.nixpkgs.follows = "nixpkgs";
};
-2
global/gensokyo/presets/nginx.nix
···
{
lib,
-
pkgs,
config,
...
}:
···
services.nginx = {
enable = lib.mkDefault true;
enableReload = lib.mkDefault true;
-
package = lib.mkDefault pkgs.nginxQuic;
statusPage = true;
+1 -2
global/gui/browser.nix
···
{
-
pkgs,
lib,
config,
...
···
lib.mkIf config.gensokyo.traits.gui {
programs.firefox = {
enable = true;
-
package = pkgs.firefox-devedition;
+
# package = pkgs.firefox-devedition;
};
}
+7 -7
global/gui/dm.nix
···
{
config,
lib,
-
pkgs,
+
# pkgs,
...
}:
lib.mkIf config.gensokyo.traits.gui {
···
enable = true;
autoNumlock = true;
wayland.enable = true;
-
theme = "catppuccin-frappe";
+
# theme = "catppuccin-frappe";
};
-
environment.systemPackages = [
-
(pkgs.catppuccin-sddm.override {
-
flavor = "frappe";
-
})
-
];
+
# environment.systemPackages = [
+
# (pkgs.catppuccin-sddm.override {
+
# flavor = "frappe";
+
# })
+
# ];
}
+11 -10
global/gui/fonts.nix
···
pkgs,
lib,
config,
-
inputs,
+
# inputs,
...
}:
lib.mkIf config.gensokyo.traits.gui {
-
fonts.packages = [
-
pkgs.nerd-fonts.hurmit
-
pkgs.nerd-fonts.fira-mono
+
fonts.packages = with pkgs; [
+
nerd-fonts.hurmit
+
nerd-fonts.fira-mono
-
pkgs.cozette
-
pkgs.fira-code
-
pkgs.noto-fonts
-
pkgs.noto-fonts-cjk-sans
-
pkgs.noto-fonts-emoji-blob-bin
+
cozette
+
fira-code
+
noto-fonts
+
noto-fonts-cjk-sans
+
noto-fonts-emoji-blob-bin
-
inputs.mystia.packages.${pkgs.system}.nishiki-teki
+
last-resort
+
# inputs.mystia.packages.${pkgs.system}.nishiki-teki
];
fonts.fontconfig = {
+4
global/gui/input.nix
···
];
};
};
+
+
environment.systemPackages = [
+
pkgs.showmethekey
+
];
}
+6 -5
global/gui/packages.nix
···
...
}:
lib.mkIf config.gensokyo.traits.gui {
-
environment.systemPackages = [
-
pkgs.vlc
-
pkgs.flameshot
-
pkgs.libnotify
-
pkgs.thunderbird
+
environment.systemPackages = with pkgs; [
+
vlc
+
flameshot
+
libnotify
+
thunderbird
+
inputs.ghostty.packages.${pkgs.system}.default
];
}
+2
global/gui/wine.nix
···
pkgs.wineWowPackages.full
pkgs.winetricks
+
pkgs.umu-launcher
+
(pkgs.bottles.override {
removeWarningPopup = true;
})
+5 -4
global/overlays/default.nix
···
-
inputs: [
-
# we can probably live without an overlay?
-
# inputs.mystia.overlays.default
-
]
+
_: [ ]
+
# inputs: [
+
# # we can probably live without an overlay?
+
# # inputs.mystia.overlays.default
+
# ]
+1 -1
global/programs/misc.nix
···
file
ripgrep
ack
-
du-dust
+
dust
parallel
cryptsetup
borgbackup
+8
global/programs/networking.nix
···
{
lib,
config,
+
pkgs,
...
}:
lib.mkMerge [
···
(lib.mkIf config.gensokyo.traits.portable {
networking.networkmanager.wifi.backend = "wpa_supplicant";
+
})
+
+
# TODO: maybe we should move these to /global/gui?
+
(lib.mkIf config.gensokyo.traits.gui {
+
networking.networkmanager.plugins = with pkgs; [
+
networkmanager-openconnect
+
];
})
(lib.mkIf (!config.gensokyo.traits.sensitive) {
+2
global/programs/nix/config.nix
···
max-jobs = "auto";
auto-optimise-store = true;
download-buffer-size = 268435456; # 256 MiB
+
+
trace-import-from-derivation = true;
};
nix.gc = {
+1
global/programs/scm.nix
···
push.autoSetupRemote = true;
gpg.ssh.allowedSignersFile = pkgs.writeText "soopyc.allowedsigners" ''
me@soopy.moe namespaces="git" ${builtins.readFile ../../creds/ssh/auth}
+
git@soopy.moe namespaces="git" ${builtins.readFile ../../creds/ssh/auth}
'';
rebase.autoStash = true;
+2 -1
global/programs/security/crypto.nix
···
{
environment.systemPackages = with pkgs; [
gnupg
-
pinentry
+
pinentry-curses
+
pinentry-qt
opensc
rage
+2
global/programs/security/kanidm.nix
···
+
{ pkgs, ... }:
{
services.kanidm = {
enableClient = true;
+
package = pkgs.kanidm_1_8;
clientSettings = {
uri = "https://serenity.mist-nessie.ts.net";
};
+7 -1
global/programs/shells.nix
···
-
{ pkgs, ... }:
+
{ pkgs, lib, ... }:
{
users.defaultUserShell = pkgs.zsh;
programs.zsh = {
···
programs.direnv = {
enable = true;
nix-direnv.enable = true;
+
};
+
+
programs.pay-respects = {
+
enable = true;
+
alias = "fuck";
+
aiIntegration = lib.mkForce false;
};
# conflicts with comma
+3
global/programs/ssh.nix
···
ConnectTimeout 5
''; # if things exceed 5 seconds to connect something has gone wrong. Fail fast to not wait.
};
+
+
# i did not consent to having this automatically enabled
+
services.gnome.gcr-ssh-agent.enable = false;
}
+2 -2
systems/koumakan/certificates/default.nix
···
-
{ ... }:
{
imports = [
./global.nix
-
./postgresql.nix
+
# ./postgresql.nix
./fediverse.nix
./bsky-pds.nix
./breezewiki.nix
+
./garage-s3.nix
];
}
+10
systems/koumakan/certificates/garage-s3.nix
···
+
{
+
# Certificate for garage domains
+
security.acme.certs."s3.soopy.moe" = {
+
group = "nginx";
+
extraDomainNames = [
+
"*.s3.soopy.moe"
+
"*.s3web.soopy.moe"
+
];
+
};
+
}
+2
systems/koumakan/certificates/postgresql.nix
···
+
# WARN: unused. see default.nix
+
{ config, ... }:
{
# PostgreSQL only certificate
+5
systems/koumakan/hardware-configuration.nix
···
];
};
+
fileSystems."/var/lib/garage/data" = {
+
device = "/dev/disk/by-uuid/99607c97-0dc6-403e-b09a-7b40735f9176";
+
fsType = "xfs";
+
};
+
swapDevices = [
{ device = "/dev/disk/by-uuid/902b902d-3486-49de-9a58-7a079c9a090d"; }
];
+20
systems/koumakan/networking/firewall.nix
···
from = 50000;
to = 50100;
}
+
+
# minecraft
+
{
+
from = 25560;
+
to = 25599;
+
}
];
allowedUDPPorts = [
443 # https over quic (http3)
+
];
+
+
allowedUDPPortRanges = [
+
# more minecraft
+
{
+
from = 25560;
+
to = 25599;
+
}
+
+
# plasmo voice
+
{
+
from = 55111;
+
to = 55199;
+
}
];
};
+1 -1
systems/koumakan/services/ci/hydra/default.nix
···
max_output_size = 5368709120 # 5 << 30 (5 GiB)
upload_logs_to_binary_cache = true
-
store_uri = s3://nix-cache?scheme=https&endpoint=s3.soopy.moe&compression=zstd&parallel-compression=true&write-nar-listing=true&ls-compression=br&log-compression=br&region=ap-east-1&secret-key=${secrets.get "signing_key/v1"}
+
store_uri = s3://cache.soopy.moe?scheme=https&endpoint=s3.soopy.moe&compression=zstd&parallel-compression=true&write-nar-listing=true&ls-compression=br&log-compression=br&region=ap-east-1&secret-key=${secrets.get "signing_key/v1"}
binary_cache_public_uri = https://cache.soopy.moe
log_prefix = https://cache.soopy.moe/
+16 -20
systems/koumakan/services/databases/postgresql.nix
···
host all all ::1/128 scram-sha-256
'';
-
settings =
-
let
-
credsDir = "/run/credentials/postgresql.service";
-
in
-
{
-
listen_addresses = pkgs.lib.mkForce "*";
-
max_connections = 200;
-
password_encryption = "scram-sha-256";
+
settings = {
+
listen_addresses = pkgs.lib.mkForce "*";
+
max_connections = 200;
+
password_encryption = "scram-sha-256";
-
log_line_prefix = "%m [%p] %h ";
-
ssl = "on";
-
ssl_cert_file = "${credsDir}/cert.pem";
-
ssl_key_file = "${credsDir}/key.pem";
+
log_line_prefix = "%m [%p] %h ";
+
# ssl = "on";
+
# ssl_cert_file = "${credsDir}/cert.pem";
+
# ssl_key_file = "${credsDir}/key.pem";
-
log_hostname = true;
-
datestyle = "iso, dmy";
-
log_timezone = "Asia/Hong_Kong";
-
timezone = "Asia/Hong_Kong";
-
default_text_search_config = "pg_catalog.english";
+
log_hostname = true;
+
datestyle = "iso, dmy";
+
log_timezone = "Asia/Hong_Kong";
+
timezone = "Asia/Hong_Kong";
+
default_text_search_config = "pg_catalog.english";
-
max_wal_size = "2GB";
-
min_wal_size = "80MB";
-
};
+
max_wal_size = "2GB";
+
min_wal_size = "80MB";
+
};
};
users.users.postgres.useDefaultShell = lib.mkForce false;
+1 -1
systems/koumakan/services/proxies/default.nix
···
-
{ ... }:
{
imports = [
./nitter.nix
./searxng.nix
./minio.nix
+
./nginx-stream.nix
];
}
-46
systems/koumakan/services/proxies/minio.nix
···
_utils,
lib,
config,
-
inputs,
...
}:
let
···
systemd.services.minio.environment = {
MINIO_BROWSER_REDIRECT_URL = "https://s3.soopy.moe/_static";
MINIO_BROWSER_LOGIN_ANIMATION = "false";
-
};
-
-
services.nginx.virtualHosts = {
-
"s3.soopy.moe" = _utils.mkSimpleProxy {
-
port = 26531;
-
extraConfig = {
-
extraConfig = ''
-
client_max_body_size 32G;
-
'';
-
-
locations."= /_static" = _utils.mkNginxFile {
-
content = ''
-
<!doctype html>
-
<html lang="en">
-
<head>
-
<title>horrors of gensokyo</title>
-
<style>
-
:root {font-family: "monospace";}
-
</style>
-
</head>
-
<body>
-
<h1>gensokyo filedump - public buckets</h1>
-
<ul>
-
<li><a href="//cache.soopy.moe">nix-cache</a></li>
-
<li>lwjgl-nix</li>
-
</ul>
-
</body>
-
</html>
-
'';
-
};
-
};
-
};
-
-
"cache.soopy.moe" = _utils.mkVhost {
-
locations."/".proxyPass = "http://localhost:26531/nix-cache/";
-
-
locations."= /" = {
-
tryFiles = "/listing.html =500";
-
root = inputs.mystia.packages.x86_64-linux.s3-listing.override {
-
bucketName = "nix-cache";
-
bucketUrl = "https://s3.soopy.moe/nix-cache/";
-
bucketWebsiteUrl = "https://cache.soopy.moe";
-
};
-
};
-
};
};
systemd.services.vmagent.serviceConfig.LoadCredential = [
+44
systems/koumakan/services/proxies/nginx-stream.nix
···
+
{
+
systemd.tmpfiles.settings."nginx-stream-log"."/var/log/nginx/stream"."d" = {
+
user = "nginx";
+
group = "nginx";
+
mode = "0750";
+
};
+
# NOTE: this doesn't work properly atm, we cba setting up routing stuff right now.
+
# systemd.services.nginx.serviceConfig = {
+
# # needed for transparent proxying
+
# CapabilityBoundingSet = ["CAP_NET_RAW"];
+
# AmbientCapabilities = ["CAP_NET_RAW"];
+
# };
+
+
services.nginx.streamConfig = ''
+
resolver 100.100.100.100;
+
# proxy_bind $remote_addr transparent;
+
proxy_connect_timeout 1s;
+
proxy_timeout 30s;
+
+
log_format basic_stream '$remote_addr [$time_local] '
+
'$protocol $status $bytes_sent $bytes_received '
+
'$session_time';
+
+
error_log /var/log/nginx/stream/error.log;
+
access_log /var/log/nginx/stream/access.log basic_stream;
+
+
# data
+
server {
+
listen 25565-25599 reuseport;
+
proxy_pass renko.mist-nessie.ts.net:$server_port;
+
}
+
+
# query sockets
+
server {
+
listen 25565-25599 udp reuseport;
+
proxy_pass renko.mist-nessie.ts.net:$server_port;
+
}
+
# voice
+
server {
+
listen 55111-55199 udp reuseport;
+
proxy_pass renko.mist-nessie.ts.net:$server_port;
+
}
+
'';
+
}
+2 -1
systems/koumakan/services/proxies/searxng.nix
···
services.searx = {
enable = true;
-
runInUwsgi = true;
environmentFile = secrets.getTemplate "searxng.env";
redisCreateLocally = true;
+
+
configureUwsgi = true;
uwsgiConfig = {
http = "/run/searx/searxng.sock";
chmod-socket = "660";
+3 -2
systems/koumakan/services/scm/forgejo.nix
···
ENABLE_NOTIFY_MAIL = true;
REGISTER_EMAIL_CONFIRM = true;
-
DISABLE_REGISTRATION = false;
+
DISABLE_REGISTRATION = false; # need to be false to enable any sort of reg.
+
ENABLE_INTERNAL_SIGNIN = true; # we have gatekeeper setup now and working, this can be turned off.
ALLOW_ONLY_EXTERNAL_REGISTRATION = true;
ENABLE_CAPTCHA = true;
···
# Logging {{{
log = {
ROOT_PATH = "/var/log/forgejo/";
-
"logger.router.MODE" = "";
+
LOGGER_ROUTER_MODE = "";
};
# }}}
-7
systems/koumakan/services/scm/tangled-knot.nix
···
{
_utils,
-
config,
...
}:
-
let
-
secrets = _utils.setupSecrets config {
-
namespace = "tangled";
-
secrets = [ "knot/key" ];
-
};
-
in
{
services.tangled-knotserver = {
enable = true;
+20 -2
systems/koumakan/services/security/pocket-id.nix
···
{
_utils,
config,
-
# lib,
...
}:
let
···
enable = true;
settings = {
-
PUBLIC_APP_URL = "https://gatekeeper.soopy.moe";
+
APP_URL = "https://gatekeeper.soopy.moe";
+
HOST = "127.0.0.1";
TRUST_PROXY = true;
PORT = "31411";
KEYS_STORAGE = "database";
···
services.nginx.virtualHosts."gatekeeper.soopy.moe" = _utils.mkSimpleProxy {
port = 31411;
+
+
extraConfig.locations."= /humans.txt" = _utils.mkNginxFile {
+
filename = "humans.txt";
+
content = ''
+
/* Credits */
+
Login Background: https://www.pixiv.net/artworks/122054405
+
You: for using our services
+
+
/* People */
+
Administrator: soopyc
+
Contact: https://soopy.moe/about
+
+
/* Service */
+
Software: Pocket ID
+
Deployed-With: NixOS
+
Security: https://soopy.moe/.well-known/security.txt
+
'';
+
};
};
}
+1
systems/koumakan/services/storage/default.nix
···
./atuin.nix
./wastebin.nix
./backup.nix
+
./garage.nix
./zipline.nix
];
}
+143
systems/koumakan/services/storage/garage.nix
···
+
{
+
_utils,
+
config,
+
lib,
+
pkgs,
+
...
+
}:
+
let
+
secrets = _utils.setupSecrets config {
+
namespace = "garage";
+
secrets = [
+
"rpc_secret"
+
"admin_token"
+
"metrics_token"
+
];
+
config.owner = "garage";
+
};
+
in
+
{
+
imports = [ secrets.generate ];
+
+
users = {
+
users.garage = {
+
isSystemUser = true;
+
group = "garage";
+
};
+
groups.garage = { };
+
};
+
+
services.garage = {
+
enable = true;
+
package = pkgs.garage_2;
+
+
settings = {
+
metadata_dir = "/var/lib/garage/meta";
+
metadata_snapshots_dir = "/var/lib/garage/snapshots";
+
data_dir = "/var/lib/garage/data";
+
db_engine = "sqlite";
+
metadata_auto_snapshot_interval = "6h";
+
+
replication_factor = 1; # we only have the resources for a single node atm.
+
compression_level = 4;
+
+
s3_api = {
+
s3_region = "ap-east-1";
+
api_bind_addr = "[::1]:39930";
+
root_domain = ".s3.soopy.moe";
+
};
+
+
# this is needed because garage apparently still doesn't support anon access via path based api, so this is more like a hack than anything atm.
+
s3_web = {
+
bind_addr = "[::1]:39939";
+
root_domain = ".s3web.soopy.moe";
+
};
+
+
rpc_bind_addr = "100.100.16.16:39931";
+
rpc_public_addr = "koumakan.mist-nessie.ts.net:39931";
+
rpc_secret_file = secrets.get "rpc_secret";
+
+
admin = {
+
api_bind_addr = "100.100.16.16:39932";
+
admin_token_file = secrets.get "admin_token";
+
metrics_token_file = secrets.get "metrics_token";
+
};
+
};
+
};
+
+
systemd.tmpfiles.settings."50-garage-init"."/var/lib/garage"."d" = {
+
user = "garage";
+
group = "garage";
+
mode = "0700";
+
};
+
+
systemd.services.garage.serviceConfig = {
+
DynamicUser = false; # we need to use a mounted filesystem and systemd explodes when i already have a mountpoint at /var/lib/garage/data.
+
User = config.users.users.garage.name;
+
Group = config.users.groups.garage.name;
+
Restart = "on-failure";
+
StateDirectory = lib.mkForce null; # this somehow breaks mounting dirs into /var/lib; systemd complains about id-mapped mount: device or resource busy
+
};
+
+
services.nginx.virtualHosts.".s3.soopy.moe" = _utils.mkSimpleProxy {
+
port = 39930;
+
extraConfig = {
+
useACMEHost = "s3.soopy.moe";
+
extraConfig = ''
+
client_max_body_size 32G;
+
proxy_max_temp_file_size 0;
+
'';
+
+
locations."= /_static" = _utils.mkNginxFile {
+
content = ''
+
<!doctype html>
+
<html lang="en">
+
<head>
+
<title>horrors of gensokyo</title>
+
<style>
+
:root {font-family: "monospace";}
+
</style>
+
</head>
+
<body>
+
<h1>gensokyo filedump - public buckets</h1>
+
<ul>
+
<li><a href="//cache.soopy.moe">nix-cache</a></li>
+
<li>lwjgl-nix</li>
+
</ul>
+
</body>
+
</html>
+
'';
+
};
+
};
+
};
+
+
services.nginx.virtualHosts."*.s3web.soopy.moe" = _utils.mkSimpleProxy {
+
port = 39939;
+
extraConfig.useACMEHost = "s3.soopy.moe";
+
};
+
+
systemd.services.vmagent.serviceConfig.LoadCredential = [
+
"garage_token:${secrets.get "metrics_token"}"
+
];
+
+
services.vmagent.prometheusConfig.scrape_configs = lib.singleton {
+
job_name = "garage-job";
+
scheme = "http";
+
static_configs = lib.singleton { targets = lib.singleton "localhost:39932"; };
+
relabel_configs = lib.singleton {
+
target_label = "instance";
+
replacement = config.networking.fqdnOrHostName;
+
};
+
+
# https://github.com/NixOS/nixpkgs/issues/367447
+
# https://docs.victoriametrics.com/sd_configs/#scrape_configs
+
# hard coding because we can't use %{ENV_VAR} syntax (yet) when checking.
+
bearer_token_file = "/run/credentials/vmagent.service/garage_token";
+
};
+
+
##################### NAMED BUCKETS WITH WEB HOSTING ###########################
+
+
services.nginx.virtualHosts."cache.soopy.moe" = _utils.mkSimpleProxy {
+
port = 39939;
+
};
+
}
+8 -1
systems/koumakan/services/storage/zipline.nix
···
settings = {
CORE_PORT = 34638;
DATASOURCE_TYPE = "s3";
-
DATASOURCE_S3_BUCKET = "zipline";
+
DATASOURCE_S3_BUCKET = "zipline-01";
DATASOURCE_S3_REGION = "ap-east-1";
DATASOURCE_S3_ENDPOINT = "https://s3.soopy.moe";
DATASOURCE_S3_FORCE_PATH_STYLE = "true";
+
+
FEATURES_OAUTH_REGISTRATION = "true";
};
};
···
extraConfig.extraConfig = ''
client_max_body_size 100M;
'';
+
};
+
+
systemd.services.zipline.serviceConfig = {
+
Restart = "on-failure";
+
RestartSec = "10s";
};
}
+1
systems/koumakan/services/telemetry/grafana/dashboards/garage.json
···
+
{"__inputs":[{"name":"DS_DS_PROMETHEUS","label":"DS_PROMETHEUS","description":"","type":"datasource","pluginId":"prometheus","pluginName":"Prometheus"}],"__elements":{},"__requires":[{"type":"grafana","id":"grafana","name":"Grafana","version":"9.2.0"},{"type":"datasource","id":"prometheus","name":"Prometheus","version":"1.0.0"},{"type":"panel","id":"timeseries","name":"Time series","version":""}],"annotations":{"list":[{"builtIn":1,"datasource":{"type":"datasource","uid":"grafana"},"enable":true,"hide":true,"iconColor":"rgba(0, 211, 255, 1)","name":"Annotations & Alerts","target":{"limit":100,"matchAny":false,"tags":[],"type":"dashboard"},"type":"dashboard"}]},"editable":true,"fiscalYearStartMonth":0,"graphTooltip":0,"id":null,"links":[],"liveNow":false,"panels":[{"datasource":{"type":"prometheus","uid":"${DS_DS_PROMETHEUS}"},"fieldConfig":{"defaults":{"color":{"mode":"palette-classic"},"custom":{"axisCenteredZero":false,"axisColorMode":"text","axisLabel":"","axisPlacement":"auto","barAlignment":0,"drawStyle":"line","fillOpacity":24,"gradientMode":"none","hideFrom":{"legend":false,"tooltip":false,"viz":false},"lineInterpolation":"linear","lineWidth":1,"pointSize":5,"scaleDistribution":{"type":"linear"},"showPoints":"auto","spanNulls":false,"stacking":{"group":"A","mode":"none"},"thresholdsStyle":{"mode":"off"}},"mappings":[],"thresholds":{"mode":"absolute","steps":[{"color":"green","value":null},{"color":"red","value":80}]},"unit":"Bps"},"overrides":[]},"gridPos":{"h":9,"w":8,"x":0,"y":0},"id":10,"options":{"legend":{"calcs":[],"displayMode":"list","placement":"bottom","showLegend":true},"tooltip":{"mode":"single","sort":"none"}},"targets":[{"datasource":{"type":"prometheus","uid":"${DS_DS_PROMETHEUS}"},"exemplar":true,"expr":"sum(rate(block_bytes_read{job=\"garage\"}[$__rate_interval]) )","hide":false,"interval":"","legendFormat":"Disk bytes read","refId":"A"},{"datasource":{"type":"prometheus","uid":"${DS_DS_PROMETHEUS}"},"exemplar":true,"expr":"-sum(rate(block_bytes_written{job=\"garage\"}[$__rate_interval]) )","hide":false,"interval":"","legendFormat":"Disk bytes written","refId":"B"}],"title":"Disk I/O","type":"timeseries"},{"datasource":{"type":"prometheus","uid":"${DS_DS_PROMETHEUS}"},"fieldConfig":{"defaults":{"color":{"mode":"palette-classic"},"custom":{"axisCenteredZero":false,"axisColorMode":"text","axisLabel":"","axisPlacement":"auto","barAlignment":0,"drawStyle":"line","fillOpacity":0,"gradientMode":"none","hideFrom":{"legend":false,"tooltip":false,"viz":false},"lineInterpolation":"linear","lineWidth":1,"pointSize":5,"scaleDistribution":{"type":"linear"},"showPoints":"auto","spanNulls":false,"stacking":{"group":"A","mode":"none"},"thresholdsStyle":{"mode":"off"}},"mappings":[],"thresholds":{"mode":"absolute","steps":[{"color":"green","value":null},{"color":"red","value":80}]},"unit":"reqps"},"overrides":[]},"gridPos":{"h":9,"w":8,"x":8,"y":0},"id":3,"options":{"legend":{"calcs":[],"displayMode":"list","placement":"bottom","showLegend":true},"tooltip":{"mode":"single","sort":"none"}},"targets":[{"datasource":{"type":"prometheus","uid":"${DS_DS_PROMETHEUS}"},"editorMode":"code","exemplar":true,"expr":"sum by (api_endpoint) (rate(api_s3_request_counter {job=\"garage\"}[$__rate_interval]))","hide":false,"interval":"","legendFormat":"{{api_endpoint}}","range":true,"refId":"A"}],"title":"API requests","type":"timeseries"},{"datasource":{"type":"prometheus","uid":"${DS_DS_PROMETHEUS}"},"fieldConfig":{"defaults":{"color":{"mode":"palette-classic"},"custom":{"axisCenteredZero":false,"axisColorMode":"text","axisLabel":"","axisPlacement":"auto","barAlignment":0,"drawStyle":"line","fillOpacity":0,"gradientMode":"none","hideFrom":{"legend":false,"tooltip":false,"viz":false},"lineInterpolation":"linear","lineWidth":1,"pointSize":5,"scaleDistribution":{"type":"linear"},"showPoints":"auto","spanNulls":false,"stacking":{"group":"A","mode":"none"},"thresholdsStyle":{"mode":"off"}},"mappings":[],"thresholds":{"mode":"absolute","steps":[{"color":"green","value":null},{"color":"red","value":80}]},"unit":"reqps"},"overrides":[]},"gridPos":{"h":9,"w":8,"x":16,"y":0},"id":9,"options":{"legend":{"calcs":[],"displayMode":"list","placement":"bottom","showLegend":true},"tooltip":{"mode":"single","sort":"none"}},"targets":[{"datasource":{"type":"prometheus","uid":"${DS_DS_PROMETHEUS}"},"exemplar":true,"expr":"sum(rate(web_request_counter {job=\"garage\"}[$__rate_interval]))","hide":false,"interval":"","legendFormat":"Web request rate","refId":"A"}],"title":"Web requests","type":"timeseries"},{"datasource":{"type":"prometheus","uid":"${DS_DS_PROMETHEUS}"},"fieldConfig":{"defaults":{"color":{"mode":"palette-classic"},"custom":{"axisCenteredZero":false,"axisColorMode":"text","axisLabel":"","axisPlacement":"auto","barAlignment":0,"drawStyle":"line","fillOpacity":0,"gradientMode":"none","hideFrom":{"legend":false,"tooltip":false,"viz":false},"lineInterpolation":"linear","lineWidth":1,"pointSize":5,"scaleDistribution":{"type":"linear"},"showPoints":"auto","spanNulls":false,"stacking":{"group":"A","mode":"none"},"thresholdsStyle":{"mode":"off"}},"mappings":[],"thresholds":{"mode":"absolute","steps":[{"color":"green","value":null},{"color":"red","value":80}]},"unit":"reqps"},"overrides":[]},"gridPos":{"h":8,"w":8,"x":0,"y":9},"id":2,"options":{"legend":{"calcs":[],"displayMode":"list","placement":"bottom","showLegend":true},"tooltip":{"mode":"single","sort":"none"}},"targets":[{"datasource":{"type":"prometheus","uid":"${DS_DS_PROMETHEUS}"},"exemplar":true,"expr":"sum by (rpc_endpoint) (rate(rpc_request_counter {job=\"garage\"}[$__rate_interval]))","hide":false,"interval":"","legendFormat":"{{rpc_endpoint}}","refId":"A"}],"title":"RPC requests","type":"timeseries"},{"datasource":{"type":"prometheus","uid":"${DS_DS_PROMETHEUS}"},"fieldConfig":{"defaults":{"color":{"mode":"palette-classic"},"custom":{"axisCenteredZero":false,"axisColorMode":"text","axisLabel":"","axisPlacement":"auto","barAlignment":0,"drawStyle":"line","fillOpacity":0,"gradientMode":"none","hideFrom":{"legend":false,"tooltip":false,"viz":false},"lineInterpolation":"linear","lineWidth":1,"pointSize":5,"scaleDistribution":{"type":"linear"},"showPoints":"auto","spanNulls":false,"stacking":{"group":"A","mode":"none"},"thresholdsStyle":{"mode":"off"}},"mappings":[],"thresholds":{"mode":"absolute","steps":[{"color":"green","value":null},{"color":"red","value":80}]},"unit":"reqps"},"overrides":[]},"gridPos":{"h":8,"w":8,"x":8,"y":9},"id":4,"options":{"legend":{"calcs":[],"displayMode":"list","placement":"bottom","showLegend":true},"tooltip":{"mode":"single","sort":"none"}},"targets":[{"datasource":{"type":"prometheus","uid":"${DS_DS_PROMETHEUS}"},"editorMode":"code","exemplar":true,"expr":"sum by (api_endpoint, status_code) (rate(api_s3_error_counter {job=\"garage\"}[$__rate_interval]))","hide":false,"interval":"","legendFormat":"{{api_endpoint}} {{status_code}}","range":true,"refId":"A"}],"title":"API errors","type":"timeseries"},{"datasource":{"type":"prometheus","uid":"${DS_DS_PROMETHEUS}"},"fieldConfig":{"defaults":{"color":{"mode":"palette-classic"},"custom":{"axisCenteredZero":false,"axisColorMode":"text","axisLabel":"","axisPlacement":"auto","barAlignment":0,"drawStyle":"line","fillOpacity":0,"gradientMode":"none","hideFrom":{"legend":false,"tooltip":false,"viz":false},"lineInterpolation":"linear","lineWidth":1,"pointSize":5,"scaleDistribution":{"type":"linear"},"showPoints":"auto","spanNulls":false,"stacking":{"group":"A","mode":"none"},"thresholdsStyle":{"mode":"off"}},"mappings":[],"thresholds":{"mode":"absolute","steps":[{"color":"green","value":null},{"color":"red","value":80}]},"unit":"reqps"},"overrides":[]},"gridPos":{"h":8,"w":8,"x":16,"y":9},"id":11,"options":{"legend":{"calcs":[],"displayMode":"list","placement":"bottom","showLegend":true},"tooltip":{"mode":"single","sort":"none"}},"targets":[{"datasource":{"type":"prometheus","uid":"${DS_DS_PROMETHEUS}"},"exemplar":true,"expr":"sum by(status_code) (rate(web_error_counter {job=\"garage\"}[$__rate_interval]))","hide":false,"interval":"","legendFormat":"{{status_code}}","refId":"A"}],"title":"Web errors","type":"timeseries"},{"datasource":{"type":"prometheus","uid":"${DS_DS_PROMETHEUS}"},"fieldConfig":{"defaults":{"color":{"mode":"palette-classic"},"custom":{"axisCenteredZero":false,"axisColorMode":"text","axisLabel":"","axisPlacement":"auto","barAlignment":0,"drawStyle":"line","fillOpacity":0,"gradientMode":"none","hideFrom":{"legend":false,"tooltip":false,"viz":false},"lineInterpolation":"linear","lineWidth":1,"pointSize":5,"scaleDistribution":{"type":"linear"},"showPoints":"auto","spanNulls":false,"stacking":{"group":"A","mode":"none"},"thresholdsStyle":{"mode":"off"}},"mappings":[],"thresholds":{"mode":"absolute","steps":[{"color":"green","value":null},{"color":"red","value":80}]}},"overrides":[{"__systemRef":"hideSeriesFrom","matcher":{"id":"byNames","options":{"mode":"exclude","names":["10.83.2.3:3903"],"prefix":"All except:","readOnly":true}},"properties":[{"id":"custom.hideFrom","value":{"legend":false,"tooltip":false,"viz":true}}]}]},"gridPos":{"h":8,"w":8,"x":0,"y":17},"id":6,"options":{"legend":{"calcs":[],"displayMode":"list","placement":"bottom","showLegend":true},"tooltip":{"mode":"single","sort":"none"}},"targets":[{"datasource":{"type":"prometheus","uid":"${DS_DS_PROMETHEUS}"},"exemplar":true,"expr":"block_resync_queue_length{job=\"garage\"}","interval":"","legendFormat":"{{instance}}","refId":"A"}],"title":"Resync queue length","type":"timeseries"},{"datasource":{"type":"prometheus","uid":"${DS_DS_PROMETHEUS}"},"fieldConfig":{"defaults":{"color":{"mode":"palette-classic"},"custom":{"axisCenteredZero":false,"axisColorMode":"text","axisLabel":"","axisPlacement":"auto","barAlignment":0,"drawStyle":"line","fillOpacity":0,"gradientMode":"none","hideFrom":{"legend":false,"tooltip":false,"viz":false},"lineInterpolation":"linear","lineWidth":1,"pointSize":5,"scaleDistribution":{"type":"linear"},"showPoints":"auto","spanNulls":false,"stacking":{"group":"A","mode":"none"},"thresholdsStyle":{"mode":"off"}},"mappings":[],"thresholds":{"mode":"absolute","steps":[{"color":"green","value":null},{"color":"red","value":80}]}},"overrides":[]},"gridPos":{"h":8,"w":8,"x":8,"y":17},"id":7,"options":{"legend":{"calcs":[],"displayMode":"list","placement":"bottom","showLegend":true},"tooltip":{"mode":"single","sort":"none"}},"targets":[{"datasource":{"type":"prometheus","uid":"${DS_DS_PROMETHEUS}"},"exemplar":true,"expr":"sum by(table_name) (table_gc_todo_queue_length{job=\"garage\"})","interval":"","legendFormat":"{{ table_name}}","refId":"A"}],"title":"Table GC queue length","type":"timeseries"},{"datasource":{"type":"prometheus","uid":"${DS_DS_PROMETHEUS}"},"fieldConfig":{"defaults":{"color":{"mode":"palette-classic"},"custom":{"axisCenteredZero":false,"axisColorMode":"text","axisLabel":"","axisPlacement":"auto","barAlignment":0,"drawStyle":"line","fillOpacity":0,"gradientMode":"none","hideFrom":{"legend":false,"tooltip":false,"viz":false},"lineInterpolation":"linear","lineWidth":1,"pointSize":5,"scaleDistribution":{"type":"linear"},"showPoints":"auto","spanNulls":false,"stacking":{"group":"A","mode":"none"},"thresholdsStyle":{"mode":"off"}},"mappings":[],"thresholds":{"mode":"absolute","steps":[{"color":"green","value":null},{"color":"red","value":80}]}},"overrides":[]},"gridPos":{"h":8,"w":8,"x":16,"y":17},"id":8,"options":{"legend":{"calcs":[],"displayMode":"list","placement":"bottom","showLegend":true},"tooltip":{"mode":"single","sort":"none"}},"targets":[{"datasource":{"type":"prometheus","uid":"${DS_DS_PROMETHEUS}"},"exemplar":true,"expr":"sum by(table_name) (table_merkle_updater_todo_queue_length{job=\"garage\"})","interval":"","legendFormat":"{{ table_name}}","refId":"A"}],"title":"Table Merkle updater queue length","type":"timeseries"},{"datasource":{"type":"prometheus","uid":"${DS_DS_PROMETHEUS}"},"fieldConfig":{"defaults":{"color":{"mode":"palette-classic"},"custom":{"axisCenteredZero":false,"axisColorMode":"text","axisLabel":"","axisPlacement":"auto","barAlignment":0,"drawStyle":"line","fillOpacity":0,"gradientMode":"none","hideFrom":{"legend":false,"tooltip":false,"viz":false},"lineInterpolation":"linear","lineWidth":1,"pointSize":5,"scaleDistribution":{"type":"linear"},"showPoints":"auto","spanNulls":false,"stacking":{"group":"A","mode":"none"},"thresholdsStyle":{"mode":"off"}},"mappings":[],"thresholds":{"mode":"absolute","steps":[{"color":"green","value":null},{"color":"red","value":80}]}},"overrides":[]},"gridPos":{"h":8,"w":8,"x":0,"y":25},"id":12,"options":{"legend":{"calcs":[],"displayMode":"list","placement":"bottom","showLegend":true},"tooltip":{"mode":"single","sort":"none"}},"targets":[{"datasource":{"type":"prometheus","uid":"${DS_DS_PROMETHEUS}"},"exemplar":true,"expr":"block_resync_errored_blocks{job=\"garage\"}","interval":"","legendFormat":"{{instance}}","refId":"A"}],"title":"Resync errored blocks","type":"timeseries"}],"refresh":"30s","schemaVersion":37,"style":"dark","tags":[],"templating":{"list":[]},"time":{"from":"now-6h","to":"now"},"timepicker":{},"timezone":"","title":"Garage","uid":"ys3pnpZ4k","version":26,"weekStart":""}
+1 -19
systems/renko/configuration.nix
···
];
networking.firewall = {
-
allowedTCPPorts = [ 59153 ];
-
allowedTCPPortRanges = [
-
{
-
from = 25560;
-
to = 25570;
-
}
-
];
-
allowedUDPPortRanges = [
-
{
-
from = 25560;
-
to = 25570;
-
}
-
-
# plasmo voice
-
{
-
from = 55111;
-
to = 55199;
-
}
-
];
+
allowedTCPPorts = [ 59153 5515 ];
};
# muh unfree software!!!!!!!!!!!!!!!!!!
+1 -1
systems/renko/services/forgejo-runner.nix
···
imports = lib.singleton secrets.generate;
services.gitea-actions-runner = {
-
package = pkgs.forgejo-actions-runner;
+
package = pkgs.forgejo-runner;
instances.default = {
enable = true;
name = "renko-default";
+10
systems/satori/configuration.nix
···
pkgs.prismlauncher
];
+
# TODO: make this a trait
+
virtualisation.docker = {
+
enable = true;
+
storageDriver = "btrfs";
+
};
+
+
users.groups.docker.members = [
+
"cassie"
+
];
+
zramSwap.enable = true;
# muh unfree software!!!!!!!!!!!!!!!!!!
+4 -2
users/cassie/default.nix
···
-
{ ... }:
{
users.users.cassie = {
isNormalUser = true;
-
extraGroups = [ "wheel" ];
+
extraGroups = [
+
"wheel"
+
"dialout" # esp programming
+
];
openssh = {
authorizedKeys.keyFiles = [ ../../creds/ssh/users/cassie ];
};
+1
users/cassie/ephemeral/vscode/extension.json
···
"hossaini.bootstrap-intellisense",
"inlang.vs-code-extension",
"jnoortheen.nix-ide",
+
"llvm-vs-code-extensions.vscode-clangd",
"minecraftcommands.syntax-mcfunction",
"mkhl.direnv",
"ms-python.debugpy",
+16 -14
users/cassie/home/dev/git.nix
···
programs.git = lib.mkMerge [
{
enable = true;
-
userName = "Sophie Cheung";
-
userEmail = "me@soopy.moe";
-
# difftastic.enable = true;
-
# delta.enable = true;
-
diff-so-fancy = {
-
enable = true;
-
stripLeadingSymbols = false;
+
settings = {
+
user.name = "Sophie Cheung";
+
user.email = "git@soopy.moe";
};
}
(lib.mkIf traits.gui {
-
signing = {
-
signByDefault = true;
-
key = inputs.self + "/creds/ssh/auth";
-
};
-
-
extraConfig = {
+
settings = {
gpg.format = "ssh";
+
commit.gpgSign = true;
+
tag.gpgSign = true;
+
+
user.signingKey = inputs.self + "/creds/ssh/auth";
};
})
];
+
programs.diff-so-fancy = {
+
enable = true;
+
enableGitIntegration = true;
+
+
settings.stripLeadingSymbols = false;
+
};
+
home.shellAliases = {
# redo previous commit when something explodes, like my key died or something
-
gcmm = "git commit -eF .git/COMMIT_EDITMSG";
+
gcmm = "git commit -eF .git/COMMIT_EDITMSG"; # FIXME: strip the thing after ------ 8< ------
};
}
+11 -2
users/cassie/home/dev/ssh.nix
···
{
programs.ssh = {
enable = true;
-
hashKnownHosts = true;
-
forwardAgent = true;
+
enableDefaultConfig = false; # silent warning
matchBlocks = {
# most intuitive design /s
···
user = "forgejo";
identitiesOnly = true;
identityFile = "~/.ssh/id_minecraft_backup";
+
};
+
+
"*" = {
+
forwardAgent = true;
+
compression = false;
+
serverAliveInterval = 0;
+
serverAliveCountMax = 3;
+
hashKnownHosts = true;
+
userKnownHostsFile = "~/.ssh/known_hosts";
+
# visualHostKey = true; # if this doesn't work im moving to hjem
};
};