Compare commits
58 Commits
25.11-move
...
33f590b214
| Author | SHA1 | Date | |
|---|---|---|---|
| 33f590b214 | |||
| 89cdef92a7 | |||
| 2f378ddc22 | |||
| 937deb7079 | |||
| 4c462c21f3 | |||
| eb26a93944 | |||
| 098478fa0f | |||
| 80fd89c5ac | |||
| 1a8c910e3a | |||
| 3992cab7c8 | |||
| f0eb5678c8 | |||
| bd262d3fb6 | |||
| f1a426bd2e | |||
| 9fe67f2b97 | |||
| 245b5b1e08 | |||
| b3954838d2 | |||
| 6b586d80ab | |||
| 0718c9f18d | |||
| 14dbc1363e | |||
| 7e0d58c097 | |||
| f2ae159c67 | |||
| a3ef9fa59e | |||
| aea71bb49b | |||
| e7b2a1bc1e | |||
| bdf4d54e99 | |||
| 26662e1419 | |||
| f2ee981953 | |||
| eb666f6a01 | |||
| b8db103e08 | |||
| 08adc255d6 | |||
| c81ca5ee4c | |||
| 9cfe456cb9 | |||
| ad7f01e41e | |||
| c452ebff3c | |||
| a1e71488d8 | |||
| 45c8f7ec27 | |||
| 67fda15ca9 | |||
| 769ab6f72d | |||
| 1769e583d8 | |||
| 2592a1cd72 | |||
| 6dbfc5805e | |||
| 1f9ff31234 | |||
| be6cab1ab2 | |||
| 7f0fdbc6bb | |||
| e3b134e48a | |||
| 0fa26e2840 | |||
| 7a3c83f088 | |||
| adcd58dce9 | |||
| 1cbfb37409 | |||
| 83d1494d4a | |||
| f8da56fe52 | |||
| bcf5b224cb | |||
| b762b06f05 | |||
| 9fedd2d61e | |||
| 4207b320c9 | |||
| 6561e37119 | |||
| 717e8c452d | |||
| 8fd3ca8c9a |
0
defaults/k9s/catppuccin-mocha.yaml
Normal file
0
defaults/k9s/catppuccin-mocha.yaml
Normal file
283
flake.lock
generated
283
flake.lock
generated
@@ -9,11 +9,11 @@
|
|||||||
"rust-overlay": "rust-overlay"
|
"rust-overlay": "rust-overlay"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1765900816,
|
"lastModified": 1771170334,
|
||||||
"narHash": "sha256-Pa7QpF+84hTuPanVaJ/B3NgdaytUMj3PN06sEaNibaM=",
|
"narHash": "sha256-tCgoCWORfNHaRXTh2QS44LwxlV8q28jVvjN5ioMicv8=",
|
||||||
"owner": "ezKEa",
|
"owner": "ezKEa",
|
||||||
"repo": "aagl-gtk-on-nix",
|
"repo": "aagl-gtk-on-nix",
|
||||||
"rev": "36b14e5e7014e471341f0807dc9a9e2d65a157f4",
|
"rev": "821b4f92c2c0981ea5b571b03403df87d2b2e2ae",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -29,11 +29,11 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1765066094,
|
"lastModified": 1767634391,
|
||||||
"narHash": "sha256-0YSU35gfRFJzx/lTGgOt6ubP8K6LeW0vaywzNNqxkl4=",
|
"narHash": "sha256-owcSz2ICqTSvhBbhPP+1eWzi88e54rRZtfCNE5E/wwg=",
|
||||||
"owner": "lnl7",
|
"owner": "lnl7",
|
||||||
"repo": "nix-darwin",
|
"repo": "nix-darwin",
|
||||||
"rev": "688427b1aab9afb478ca07989dc754fa543e03d5",
|
"rev": "08585aacc3d6d6c280a02da195fdbd4b9cf083c2",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -46,11 +46,11 @@
|
|||||||
"flake-compat": {
|
"flake-compat": {
|
||||||
"flake": false,
|
"flake": false,
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1761588595,
|
"lastModified": 1767039857,
|
||||||
"narHash": "sha256-XKUZz9zewJNUj46b4AJdiRZJAvSZ0Dqj2BNfXvFlJC4=",
|
"narHash": "sha256-vNpUSpF5Nuw8xvDLj2KCwwksIbjua2LZCqhV1LNRDns=",
|
||||||
"owner": "edolstra",
|
"owner": "edolstra",
|
||||||
"repo": "flake-compat",
|
"repo": "flake-compat",
|
||||||
"rev": "f387cd2afec9419c8ee37694406ca490c3f34ee5",
|
"rev": "5edf11c44bc78a0d334f6334cdaf7d60d732daab",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -59,97 +59,46 @@
|
|||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"flake-compat_2": {
|
"flake-schemas": {
|
||||||
"flake": false,
|
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1761588595,
|
"lastModified": 1761577921,
|
||||||
"narHash": "sha256-XKUZz9zewJNUj46b4AJdiRZJAvSZ0Dqj2BNfXvFlJC4=",
|
"narHash": "sha256-eK3/xbUOrxp9fFlei09XNjqcdiHXxndzrTXp7jFpOk8=",
|
||||||
"owner": "edolstra",
|
"rev": "47849c7625e223d36766968cc6dc23ba0e135922",
|
||||||
"repo": "flake-compat",
|
"revCount": 107,
|
||||||
"rev": "f387cd2afec9419c8ee37694406ca490c3f34ee5",
|
"type": "tarball",
|
||||||
"type": "github"
|
"url": "https://api.flakehub.com/f/pinned/DeterminateSystems/flake-schemas/0.2.0/019a4a84-544d-7c59-b26d-e334e320c932/source.tar.gz"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
"owner": "edolstra",
|
"type": "tarball",
|
||||||
"repo": "flake-compat",
|
"url": "https://flakehub.com/f/DeterminateSystems/flake-schemas/%2A"
|
||||||
"type": "github"
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"flake-utils": {
|
"flake-schemas_2": {
|
||||||
"inputs": {
|
|
||||||
"systems": "systems"
|
|
||||||
},
|
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1731533236,
|
"lastModified": 1761577921,
|
||||||
"narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=",
|
"narHash": "sha256-eK3/xbUOrxp9fFlei09XNjqcdiHXxndzrTXp7jFpOk8=",
|
||||||
"owner": "numtide",
|
"rev": "47849c7625e223d36766968cc6dc23ba0e135922",
|
||||||
"repo": "flake-utils",
|
"revCount": 107,
|
||||||
"rev": "11707dc2f618dd54ca8739b309ec4fc024de578b",
|
"type": "tarball",
|
||||||
"type": "github"
|
"url": "https://api.flakehub.com/f/pinned/DeterminateSystems/flake-schemas/0.2.0/019a4a84-544d-7c59-b26d-e334e320c932/source.tar.gz"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
"owner": "numtide",
|
"type": "tarball",
|
||||||
"repo": "flake-utils",
|
"url": "https://flakehub.com/f/DeterminateSystems/flake-schemas/%2A"
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"ghostty": {
|
|
||||||
"inputs": {
|
|
||||||
"flake-compat": "flake-compat_2",
|
|
||||||
"flake-utils": "flake-utils",
|
|
||||||
"home-manager": "home-manager",
|
|
||||||
"nixpkgs": "nixpkgs_2",
|
|
||||||
"zig": "zig",
|
|
||||||
"zon2nix": "zon2nix"
|
|
||||||
},
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1765908726,
|
|
||||||
"narHash": "sha256-tUvTIxhD2aGbyBQgDXknoKWQpuNrgt9TrGQaV9q1WOQ=",
|
|
||||||
"owner": "ghostty-org",
|
|
||||||
"repo": "ghostty",
|
|
||||||
"rev": "67eb4805779a80bfe2d9ac5a67f19b89f4e67b16",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "ghostty-org",
|
|
||||||
"repo": "ghostty",
|
|
||||||
"type": "github"
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"home-manager": {
|
"home-manager": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"nixpkgs": [
|
"nixpkgs": [
|
||||||
"ghostty",
|
|
||||||
"nixpkgs"
|
"nixpkgs"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1755776884,
|
"lastModified": 1770260404,
|
||||||
"narHash": "sha256-CPM7zm6csUx7vSfKvzMDIjepEJv1u/usmaT7zydzbuI=",
|
"narHash": "sha256-3iVX1+7YUIt23hBx1WZsUllhbmP2EnXrV8tCRbLxHc8=",
|
||||||
"owner": "nix-community",
|
"owner": "nix-community",
|
||||||
"repo": "home-manager",
|
"repo": "home-manager",
|
||||||
"rev": "4fb695d10890e9fc6a19deadf85ff79ffb78da86",
|
"rev": "0d782ee42c86b196acff08acfbf41bb7d13eed5b",
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "nix-community",
|
|
||||||
"ref": "release-25.05",
|
|
||||||
"repo": "home-manager",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"home-manager_2": {
|
|
||||||
"inputs": {
|
|
||||||
"nixpkgs": [
|
|
||||||
"nixpkgs"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1765859973,
|
|
||||||
"narHash": "sha256-LN5O0h9GSgcDE/sz4+sLS3CbQALru1x4lh9hrxpeHwI=",
|
|
||||||
"owner": "nix-community",
|
|
||||||
"repo": "home-manager",
|
|
||||||
"rev": "7df150f0d3857cf68dae443813b27acfb201b2d8",
|
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -193,24 +142,11 @@
|
|||||||
},
|
},
|
||||||
"nixpkgs_2": {
|
"nixpkgs_2": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1763191728,
|
"lastModified": 1771043024,
|
||||||
"narHash": "sha256-gI9PpaoX4/f28HkjcTbFVpFhtOxSDtOEdFaHZrdETe0=",
|
"narHash": "sha256-O1XDr7EWbRp+kHrNNgLWgIrB0/US5wvw9K6RERWAj6I=",
|
||||||
"rev": "1d4c88323ac36805d09657d13a5273aea1b34f0c",
|
|
||||||
"type": "tarball",
|
|
||||||
"url": "https://releases.nixos.org/nixpkgs/nixpkgs-25.11pre896415.1d4c88323ac3/nixexprs.tar.xz"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"type": "tarball",
|
|
||||||
"url": "https://channels.nixos.org/nixpkgs-unstable/nixexprs.tar.xz"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"nixpkgs_3": {
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1765762245,
|
|
||||||
"narHash": "sha256-3iXM/zTqEskWtmZs3gqNiVtRTsEjYAedIaLL0mSBsrk=",
|
|
||||||
"owner": "nixos",
|
"owner": "nixos",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "c8cfcd6ccd422e41cc631a0b73ed4d5a925c393d",
|
"rev": "3aadb7ca9eac2891d52a9dec199d9580a6e2bf44",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -220,7 +156,7 @@
|
|||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"nixpkgs_4": {
|
"nixpkgs_3": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1744536153,
|
"lastModified": 1744536153,
|
||||||
"narHash": "sha256-awS2zRgF4uTwrOKwwiJcByDzDOdo3Q1rPZbiHQg/N38=",
|
"narHash": "sha256-awS2zRgF4uTwrOKwwiJcByDzDOdo3Q1rPZbiHQg/N38=",
|
||||||
@@ -236,15 +172,44 @@
|
|||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"nixpkgs_4": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1766201043,
|
||||||
|
"narHash": "sha256-eplAP+rorKKd0gNjV3rA6+0WMzb1X1i16F5m5pASnjA=",
|
||||||
|
"rev": "b3aad468604d3e488d627c0b43984eb60e75e782",
|
||||||
|
"revCount": 904049,
|
||||||
|
"type": "tarball",
|
||||||
|
"url": "https://api.flakehub.com/f/pinned/NixOS/nixpkgs/0.2511.904049%2Brev-b3aad468604d3e488d627c0b43984eb60e75e782/019b3f6c-8b33-7edb-b858-9979590f270b/source.tar.gz"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"type": "tarball",
|
||||||
|
"url": "https://flakehub.com/f/NixOS/nixpkgs/%2A"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nixpkgs_5": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1769089682,
|
||||||
|
"narHash": "sha256-9yA/LIuAVQq0lXelrZPjLuLVuZdm03p8tfmHhnDIkms=",
|
||||||
|
"rev": "078d69f03934859a181e81ba987c2bb033eebfc5",
|
||||||
|
"revCount": 906333,
|
||||||
|
"type": "tarball",
|
||||||
|
"url": "https://api.flakehub.com/f/pinned/NixOS/nixpkgs/0.2511.906333%2Brev-078d69f03934859a181e81ba987c2bb033eebfc5/019bebf2-031c-7119-8fdc-ce9d29d005fa/source.tar.gz"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"type": "tarball",
|
||||||
|
"url": "https://flakehub.com/f/NixOS/nixpkgs/%2A"
|
||||||
|
}
|
||||||
|
},
|
||||||
"root": {
|
"root": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"aagl": "aagl",
|
"aagl": "aagl",
|
||||||
"darwin": "darwin",
|
"darwin": "darwin",
|
||||||
"ghostty": "ghostty",
|
"home-manager": "home-manager",
|
||||||
"home-manager": "home-manager_2",
|
|
||||||
"nix-flatpak": "nix-flatpak",
|
"nix-flatpak": "nix-flatpak",
|
||||||
"nixpkgs": "nixpkgs_3",
|
"nixpkgs": "nixpkgs_2",
|
||||||
"rust-overlay": "rust-overlay_2"
|
"rust-overlay": "rust-overlay_2",
|
||||||
|
"swaytreesave": "swaytreesave",
|
||||||
|
"vintage-story": "vintage-story"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"rust-overlay": {
|
"rust-overlay": {
|
||||||
@@ -252,11 +217,11 @@
|
|||||||
"nixpkgs": "nixpkgs"
|
"nixpkgs": "nixpkgs"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1764470739,
|
"lastModified": 1770952264,
|
||||||
"narHash": "sha256-sa9f81B1dWO16QtgDTWHX8DQbiHKzHndpaunY5EQtwE=",
|
"narHash": "sha256-CjymNrJZWBtpavyuTkfPVPaZkwzIzGaf0E/3WgcwM14=",
|
||||||
"owner": "oxalica",
|
"owner": "oxalica",
|
||||||
"repo": "rust-overlay",
|
"repo": "rust-overlay",
|
||||||
"rev": "3bfa664055e1a09c6aedab5533c5fc8d6ca5741a",
|
"rev": "ec6a3d5cdf14bb5a1dd03652bd3f6351004d2188",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -267,86 +232,58 @@
|
|||||||
},
|
},
|
||||||
"rust-overlay_2": {
|
"rust-overlay_2": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
|
"nixpkgs": "nixpkgs_3"
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1771211437,
|
||||||
|
"narHash": "sha256-lcNK438i4DGtyA+bPXXyVLHVmJjYpVKmpux9WASa3ro=",
|
||||||
|
"owner": "oxalica",
|
||||||
|
"repo": "rust-overlay",
|
||||||
|
"rev": "c62195b3d6e1bb11e0c2fb2a494117d3b55d410f",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "oxalica",
|
||||||
|
"repo": "rust-overlay",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"swaytreesave": {
|
||||||
|
"inputs": {
|
||||||
|
"flake-schemas": "flake-schemas",
|
||||||
"nixpkgs": "nixpkgs_4"
|
"nixpkgs": "nixpkgs_4"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1765852971,
|
"lastModified": 1767148467,
|
||||||
"narHash": "sha256-rQdOMqfQNhcfqvh1dFIVWh09mrIWwerUJqqBdhIsf8g=",
|
"narHash": "sha256-W0O7SWq8ucokt4ctEAEvRvNoSM/oF7fBfb2kTN+lwTs=",
|
||||||
"owner": "oxalica",
|
"ref": "refs/heads/master",
|
||||||
"repo": "rust-overlay",
|
"rev": "0f4bb9bb450b28aa4f29d5eb2062deac6c26687a",
|
||||||
"rev": "5f98ccecc9f1bc1c19c0a350a659af1a04b3b319",
|
"revCount": 4,
|
||||||
"type": "github"
|
"type": "git",
|
||||||
|
"url": "https://scm.wyattjmiller.com/wymiller/swaytreesave-nix.git"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
"owner": "oxalica",
|
"type": "git",
|
||||||
"repo": "rust-overlay",
|
"url": "https://scm.wyattjmiller.com/wymiller/swaytreesave-nix.git"
|
||||||
"type": "github"
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"systems": {
|
"vintage-story": {
|
||||||
"locked": {
|
|
||||||
"lastModified": 1681028828,
|
|
||||||
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
|
|
||||||
"owner": "nix-systems",
|
|
||||||
"repo": "default",
|
|
||||||
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "nix-systems",
|
|
||||||
"repo": "default",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"zig": {
|
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"flake-compat": [
|
"flake-schemas": "flake-schemas_2",
|
||||||
"ghostty",
|
"nixpkgs": "nixpkgs_5"
|
||||||
"flake-compat"
|
|
||||||
],
|
|
||||||
"flake-utils": [
|
|
||||||
"ghostty",
|
|
||||||
"flake-utils"
|
|
||||||
],
|
|
||||||
"nixpkgs": [
|
|
||||||
"ghostty",
|
|
||||||
"nixpkgs"
|
|
||||||
]
|
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1763295135,
|
"lastModified": 1769397199,
|
||||||
"narHash": "sha256-sGv/NHCmEnJivguGwB5w8LRmVqr1P72OjS+NzcJsssE=",
|
"narHash": "sha256-MSajncUGZtlpl88rqFdj42eGGyWnk2jw84VbK3AgUBA=",
|
||||||
"owner": "mitchellh",
|
"ref": "refs/heads/master",
|
||||||
"repo": "zig-overlay",
|
"rev": "4d2313c50933645040a0d12556016fc2916bfa65",
|
||||||
"rev": "64f8b42cfc615b2cf99144adf2b7728c7847c72a",
|
"revCount": 1,
|
||||||
"type": "github"
|
"type": "git",
|
||||||
|
"url": "https://scm.wyattjmiller.com/wymiller/vintage-story-nix.git"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
"owner": "mitchellh",
|
"type": "git",
|
||||||
"repo": "zig-overlay",
|
"url": "https://scm.wyattjmiller.com/wymiller/vintage-story-nix.git"
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"zon2nix": {
|
|
||||||
"inputs": {
|
|
||||||
"nixpkgs": [
|
|
||||||
"ghostty",
|
|
||||||
"nixpkgs"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1758405547,
|
|
||||||
"narHash": "sha256-WgaDgvIZMPvlZcZrpPMjkaalTBnGF2lTG+62znXctWM=",
|
|
||||||
"owner": "jcollie",
|
|
||||||
"repo": "zon2nix",
|
|
||||||
"rev": "bf983aa90ff169372b9fa8c02e57ea75e0b42245",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "jcollie",
|
|
||||||
"repo": "zon2nix",
|
|
||||||
"rev": "bf983aa90ff169372b9fa8c02e57ea75e0b42245",
|
|
||||||
"type": "github"
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|||||||
98
flake.nix
98
flake.nix
@@ -11,12 +11,15 @@
|
|||||||
url = "github:lnl7/nix-darwin/nix-darwin-25.11";
|
url = "github:lnl7/nix-darwin/nix-darwin-25.11";
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
};
|
};
|
||||||
ghostty.url = "github:ghostty-org/ghostty";
|
|
||||||
rust-overlay.url = "github:oxalica/rust-overlay";
|
rust-overlay.url = "github:oxalica/rust-overlay";
|
||||||
aagl = {
|
aagl = {
|
||||||
url = "github:ezKEa/aagl-gtk-on-nix";
|
url = "github:ezKEa/aagl-gtk-on-nix";
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
# My personal flakes
|
||||||
|
swaytreesave.url = "git+https://scm.wyattjmiller.com/wymiller/swaytreesave-nix.git";
|
||||||
|
vintage-story.url = "git+https://scm.wyattjmiller.com/wymiller/vintage-story-nix.git";
|
||||||
};
|
};
|
||||||
|
|
||||||
outputs = inputs @ {
|
outputs = inputs @ {
|
||||||
@@ -25,15 +28,16 @@
|
|||||||
nix-flatpak,
|
nix-flatpak,
|
||||||
darwin,
|
darwin,
|
||||||
home-manager,
|
home-manager,
|
||||||
ghostty,
|
|
||||||
rust-overlay,
|
rust-overlay,
|
||||||
aagl,
|
aagl,
|
||||||
|
swaytreesave,
|
||||||
|
vintage-story,
|
||||||
...
|
...
|
||||||
}: let
|
}: let
|
||||||
userName = "wyatt";
|
userName = "wyatt";
|
||||||
userEmail = "wyatt@wyattjmiller.com";
|
userEmail = "wyatt@wyattjmiller.com";
|
||||||
extraSpecialArgs = {
|
extraSpecialArgs = {
|
||||||
inherit userName userEmail ghostty;
|
inherit userName userEmail swaytreesave;
|
||||||
};
|
};
|
||||||
|
|
||||||
myOverlays = { ... }: {
|
myOverlays = { ... }: {
|
||||||
@@ -54,9 +58,9 @@
|
|||||||
darwinConfigurations."sephiroth" = darwin.lib.darwinSystem {
|
darwinConfigurations."sephiroth" = darwin.lib.darwinSystem {
|
||||||
system = "aarch64-darwin";
|
system = "aarch64-darwin";
|
||||||
specialArgs = {
|
specialArgs = {
|
||||||
inherit userName userEmail ghostty;
|
inherit userName userEmail;
|
||||||
hostname = "sephiroth";
|
hostname = "sephiroth";
|
||||||
role = "devel";
|
role = "workstation";
|
||||||
};
|
};
|
||||||
modules = [
|
modules = [
|
||||||
myOverlays
|
myOverlays
|
||||||
@@ -67,7 +71,8 @@
|
|||||||
{
|
{
|
||||||
home-manager.useGlobalPkgs = true;
|
home-manager.useGlobalPkgs = true;
|
||||||
home-manager.useUserPackages = true;
|
home-manager.useUserPackages = true;
|
||||||
home-manager.extraSpecialArgs = extraSpecialArgs;
|
home-manager.extraSpecialArgs = extraSpecialArgs // { isNixOS = false; role = "workstation"; };
|
||||||
|
# home-manager.extraSpecialArgs = extraSpecialArgs;
|
||||||
home-manager.backupFileExtension = "bak";
|
home-manager.backupFileExtension = "bak";
|
||||||
home-manager.users.${userName} = import ./home;
|
home-manager.users.${userName} = import ./home;
|
||||||
}
|
}
|
||||||
@@ -78,9 +83,9 @@
|
|||||||
nixosConfigurations."cloud" = nixpkgs.lib.nixosSystem {
|
nixosConfigurations."cloud" = nixpkgs.lib.nixosSystem {
|
||||||
system = "x86_64-linux";
|
system = "x86_64-linux";
|
||||||
specialArgs = {
|
specialArgs = {
|
||||||
inherit userName userEmail ghostty aagl;
|
inherit userName userEmail aagl vintage-story;
|
||||||
hostname = "cloud";
|
hostname = "cloud";
|
||||||
role = "devel";
|
role = "workstation";
|
||||||
};
|
};
|
||||||
modules = [
|
modules = [
|
||||||
myOverlays
|
myOverlays
|
||||||
@@ -92,7 +97,7 @@
|
|||||||
{
|
{
|
||||||
home-manager.useGlobalPkgs = true;
|
home-manager.useGlobalPkgs = true;
|
||||||
home-manager.useUserPackages = true;
|
home-manager.useUserPackages = true;
|
||||||
home-manager.extraSpecialArgs = extraSpecialArgs;
|
home-manager.extraSpecialArgs = extraSpecialArgs // { isNixOS = true; role = "workstation"; };
|
||||||
home-manager.backupFileExtension = "bak";
|
home-manager.backupFileExtension = "bak";
|
||||||
home-manager.users.${userName}.imports = [
|
home-manager.users.${userName}.imports = [
|
||||||
./home
|
./home
|
||||||
@@ -156,5 +161,80 @@
|
|||||||
# }
|
# }
|
||||||
# ];
|
# ];
|
||||||
};
|
};
|
||||||
|
|
||||||
|
# Vintage story server
|
||||||
|
nixosConfigurations."thancred" = nixpkgs.lib.nixosSystem {
|
||||||
|
system = "x86_64-linux";
|
||||||
|
specialArgs = {
|
||||||
|
inherit userName userEmail vintage-story;
|
||||||
|
hostname = "thancred";
|
||||||
|
role = "server";
|
||||||
|
};
|
||||||
|
modules = [
|
||||||
|
myOverlays
|
||||||
|
./modules/common
|
||||||
|
./modules/machine/thancred
|
||||||
|
|
||||||
|
home-manager.nixosModules.home-manager
|
||||||
|
{
|
||||||
|
home-manager.useGlobalPkgs = true;
|
||||||
|
home-manager.useUserPackages = true;
|
||||||
|
home-manager.extraSpecialArgs = extraSpecialArgs // { isNixOS = true; role = "server"; };
|
||||||
|
home-manager.backupFileExtension = "bak";
|
||||||
|
home-manager.users.${userName}.imports = [
|
||||||
|
./home
|
||||||
|
];
|
||||||
|
}
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
# Matrix and Mastodon server
|
||||||
|
nixosConfigurations."yshtola" = nixpkgs.lib.nixosSystem {
|
||||||
|
system = "x86_64-linux";
|
||||||
|
specialArgs = {
|
||||||
|
inherit userName userEmail;
|
||||||
|
hostname = "yshtola";
|
||||||
|
role = "server";
|
||||||
|
};
|
||||||
|
modules = [
|
||||||
|
myOverlays
|
||||||
|
./modules/common
|
||||||
|
./modules/machine/yshtola
|
||||||
|
|
||||||
|
home-manager.nixosModules.home-manager
|
||||||
|
{
|
||||||
|
home-manager.useGlobalPkgs = true;
|
||||||
|
home-manager.useUserPackages = true;
|
||||||
|
home-manager.extraSpecialArgs = extraSpecialArgs // { isNixOS = true; role = "server"; };
|
||||||
|
home-manager.backupFileExtension = "bak";
|
||||||
|
home-manager.users.${userName}.imports = [
|
||||||
|
./home
|
||||||
|
];
|
||||||
|
}
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
# generic non-NixOS Linux machine
|
||||||
|
homeConfigurations."generic" = let
|
||||||
|
hostname = builtins.getEnv "HOSTNAME";
|
||||||
|
system = "x86_64-linux";
|
||||||
|
in home-manager.lib.homeManagerConfiguration {
|
||||||
|
pkgs = nixpkgs.legacyPackages.${system};
|
||||||
|
|
||||||
|
extraSpecialArgs = {
|
||||||
|
inherit userName userEmail hostname;
|
||||||
|
isNixOS = false;
|
||||||
|
role = "workstation";
|
||||||
|
};
|
||||||
|
modules = [
|
||||||
|
{
|
||||||
|
nixpkgs.overlays = [
|
||||||
|
rust-overlay.overlays.default
|
||||||
|
self.common.overlays
|
||||||
|
];
|
||||||
|
}
|
||||||
|
./home
|
||||||
|
];
|
||||||
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
{
|
{
|
||||||
pkgs,
|
pkgs,
|
||||||
lib,
|
lib,
|
||||||
|
isNixOS ? true,
|
||||||
...
|
...
|
||||||
}: {
|
}: {
|
||||||
programs.firefox = {
|
programs.firefox = {
|
||||||
@@ -9,7 +10,7 @@
|
|||||||
};
|
};
|
||||||
|
|
||||||
programs.chromium = {
|
programs.chromium = {
|
||||||
enable = pkgs.stdenv.isLinux;
|
enable = pkgs.stdenv.isLinux && isNixOS;
|
||||||
package = pkgs.ungoogled-chromium.override {
|
package = pkgs.ungoogled-chromium.override {
|
||||||
enableWideVine = true;
|
enableWideVine = true;
|
||||||
commandLineArgs = [
|
commandLineArgs = [
|
||||||
|
|||||||
@@ -1,64 +1,59 @@
|
|||||||
{
|
{ lib
|
||||||
lib,
|
, pkgs
|
||||||
pkgs,
|
, userName
|
||||||
userName,
|
, swaytreesave
|
||||||
userEmail,
|
, isNixOS ? true
|
||||||
ghostty,
|
, ...
|
||||||
...
|
|
||||||
}: let
|
}: let
|
||||||
# Have a file sturcture that holds all the configuration files that can't be configured by Nix
|
# Have a file sturcture that holds all the configuration files that can't be configured by Nix
|
||||||
# or maybe I'm too lazy to do anything about it? I dunno
|
# or maybe I'm too lazy to do anything about it? I dunno
|
||||||
dirs = {
|
dirs = {
|
||||||
defaults = ../defaults;
|
defaults = ../defaults;
|
||||||
};
|
};
|
||||||
in {
|
in
|
||||||
|
{
|
||||||
|
_module.args = {
|
||||||
|
inherit dirs;
|
||||||
|
};
|
||||||
|
|
||||||
# Import sub modules
|
# Import sub modules
|
||||||
imports = map (module: import module {inherit lib pkgs dirs userName userEmail ghostty;}) [
|
imports = [
|
||||||
./atuin.nix
|
|
||||||
./shell.nix
|
|
||||||
./packages
|
./packages
|
||||||
./git.nix
|
|
||||||
./starship.nix
|
|
||||||
./eza.nix
|
|
||||||
./neovim.nix
|
|
||||||
./direnv.nix
|
|
||||||
./sway.nix
|
|
||||||
./terminal.nix
|
|
||||||
./browser.nix
|
|
||||||
./zellij.nix
|
|
||||||
./bat.nix
|
|
||||||
./lazygit.nix
|
|
||||||
];
|
];
|
||||||
|
|
||||||
# Home Manager needs a bit of information about you and the
|
home = lib.mkMerge [
|
||||||
# paths it should manage.
|
{
|
||||||
home = {
|
username = userName;
|
||||||
username = userName;
|
homeDirectory =
|
||||||
homeDirectory =
|
if pkgs.stdenv.isDarwin
|
||||||
if pkgs.stdenv.isDarwin
|
then "/Users/${userName}"
|
||||||
then "/Users/${userName}"
|
else "/home/${userName}";
|
||||||
else "/home/${userName}";
|
|
||||||
|
|
||||||
sessionVariables = {
|
stateVersion = "24.11";
|
||||||
XDG_CURRENT_DESKTOP = "sway";
|
}
|
||||||
XDG_SESSION_TYPE = "wayland";
|
|
||||||
XDG_SESSION_DESKTOP="sway";
|
|
||||||
XDG_CONFIG_HOME = "$HOME/.config";
|
|
||||||
XDG_CACHE_HOME = "$HOME/.cache";
|
|
||||||
XDG_DATA_HOME = "$HOME/.local/share";
|
|
||||||
XDG_STATE_HOME = "$HOME/.local/state";
|
|
||||||
NIXOS_OZONE_WL = "1";
|
|
||||||
};
|
|
||||||
|
|
||||||
pointerCursor = lib.mkIf pkgs.stdenv.isLinux {
|
(lib.mkIf isNixOS {
|
||||||
gtk.enable = true;
|
sessionVariables = {
|
||||||
package = pkgs.catppuccin-cursors.mochaDark;
|
XDG_CURRENT_DESKTOP = "sway";
|
||||||
name = "catppuccin-mocha-dark-cursors";
|
XDG_SESSION_TYPE = "wayland";
|
||||||
size = 22;
|
XDG_SESSION_DESKTOP = "sway";
|
||||||
};
|
XDG_CONFIG_HOME = "$HOME/.config";
|
||||||
|
XDG_CACHE_HOME = "$HOME/.cache";
|
||||||
|
XDG_DATA_HOME = "$HOME/.local/share";
|
||||||
|
XDG_STATE_HOME = "$HOME/.local/state";
|
||||||
|
NIXOS_OZONE_WL = "1";
|
||||||
|
};
|
||||||
|
})
|
||||||
|
|
||||||
stateVersion = "24.11";
|
(lib.mkIf pkgs.stdenv.isLinux {
|
||||||
};
|
pointerCursor = {
|
||||||
|
gtk.enable = true;
|
||||||
|
package = pkgs.catppuccin-cursors.mochaDark;
|
||||||
|
name = "catppuccin-mocha-dark-cursors";
|
||||||
|
size = 22;
|
||||||
|
};
|
||||||
|
})
|
||||||
|
];
|
||||||
|
|
||||||
# Let Home Manager install and manage itself.
|
# Let Home Manager install and manage itself.
|
||||||
programs.home-manager.enable = true;
|
programs.home-manager.enable = true;
|
||||||
|
|||||||
@@ -40,6 +40,11 @@
|
|||||||
ca = "commit -am";
|
ca = "commit -am";
|
||||||
dc = "diff --cached";
|
dc = "diff --cached";
|
||||||
amend = "commit --amend -m";
|
amend = "commit --amend -m";
|
||||||
|
wipe = "git reset --hard";
|
||||||
|
gg = "git reset --hard";
|
||||||
|
ggs = "git reset --hard";
|
||||||
|
sw = "git switch";
|
||||||
|
r = "git restore";
|
||||||
|
|
||||||
# aliases for submodules
|
# aliases for submodules
|
||||||
update = "submodule update --init --recursive";
|
update = "submodule update --init --recursive";
|
||||||
|
|||||||
32
home/k9s.nix
Normal file
32
home/k9s.nix
Normal file
@@ -0,0 +1,32 @@
|
|||||||
|
{ pkgs, ... }: {
|
||||||
|
programs.k9s = {
|
||||||
|
enable = true;
|
||||||
|
package = pkgs.k9s;
|
||||||
|
settings.k9s = {
|
||||||
|
refreshRate = "2s";
|
||||||
|
liveViewAutoRefresh = false;
|
||||||
|
apiServerTimeout = "30s";
|
||||||
|
maxConnRetry = 5;
|
||||||
|
readOnly = true;
|
||||||
|
noExitOnCtrlC = false;
|
||||||
|
portForwardAddress = "localhost";
|
||||||
|
skipLatestRevCheck = false;
|
||||||
|
|
||||||
|
skin = {
|
||||||
|
catppuccin-mocha = ../defaults/k9s/catppuccin-mocha.yaml;
|
||||||
|
};
|
||||||
|
|
||||||
|
ui = {
|
||||||
|
skin = "catppuccin-mocha";
|
||||||
|
enableMouse = true;
|
||||||
|
headless = false;
|
||||||
|
logoless = true;
|
||||||
|
crumbsless = false;
|
||||||
|
splashless = true;
|
||||||
|
reactive = false;
|
||||||
|
noIcons = false;
|
||||||
|
defaultsToFullscreen = false;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
14
home/krew.nix
Normal file
14
home/krew.nix
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
{ pkgs, lib, ... }:
|
||||||
|
with pkgs;
|
||||||
|
let
|
||||||
|
plugins = [
|
||||||
|
"krew"
|
||||||
|
"oidc-login"
|
||||||
|
];
|
||||||
|
in {
|
||||||
|
home.activation.krew = lib.hm.dag.entryAfter [ "writeBoundary" ] ''
|
||||||
|
${lib.concatMapStringsSep "\n" (plugin: ''
|
||||||
|
$DRY_RUN_CMD ${krew}/bin/krew install ${plugin} || true
|
||||||
|
'') plugins}
|
||||||
|
'';
|
||||||
|
}
|
||||||
@@ -1,4 +1,8 @@
|
|||||||
{dirs, ...}: {
|
{...}: let
|
||||||
|
dirs = {
|
||||||
|
defaults = ../defaults;
|
||||||
|
};
|
||||||
|
in {
|
||||||
programs.neovim = {
|
programs.neovim = {
|
||||||
enable = true;
|
enable = true;
|
||||||
defaultEditor = true;
|
defaultEditor = true;
|
||||||
|
|||||||
@@ -2,9 +2,19 @@
|
|||||||
pkgs,
|
pkgs,
|
||||||
...
|
...
|
||||||
}: {
|
}: {
|
||||||
home.packages = with pkgs; [
|
imports = [
|
||||||
yazi # terminal file manager
|
../atuin.nix
|
||||||
|
../shell.nix
|
||||||
|
../git.nix
|
||||||
|
../starship.nix
|
||||||
|
../eza.nix
|
||||||
|
../neovim.nix
|
||||||
|
../bat.nix
|
||||||
|
];
|
||||||
|
|
||||||
|
nixpkgs.config.allowUnfree = true;
|
||||||
|
|
||||||
|
home.packages = with pkgs; [
|
||||||
# archives
|
# archives
|
||||||
zip
|
zip
|
||||||
xz
|
xz
|
||||||
@@ -12,39 +22,21 @@
|
|||||||
p7zip
|
p7zip
|
||||||
|
|
||||||
# utils
|
# utils
|
||||||
|
yazi
|
||||||
tmux
|
tmux
|
||||||
bottom
|
bottom
|
||||||
ripgrep
|
ripgrep
|
||||||
jq
|
jq
|
||||||
yq-go
|
yq-go
|
||||||
fzf
|
fzf
|
||||||
fh
|
|
||||||
aria2
|
aria2
|
||||||
yt-dlp
|
gnupg
|
||||||
obsidian
|
|
||||||
vscode
|
|
||||||
weechat
|
|
||||||
inetutils
|
|
||||||
|
|
||||||
# misc
|
# misc
|
||||||
cowsay
|
|
||||||
file
|
file
|
||||||
which
|
which
|
||||||
tree
|
tree
|
||||||
gnutar
|
gnutar
|
||||||
gnupg
|
|
||||||
zoxide
|
|
||||||
babelfish
|
babelfish
|
||||||
|
|
||||||
# language-specific package managers
|
|
||||||
nodejs
|
|
||||||
cargo
|
|
||||||
python3
|
|
||||||
|
|
||||||
# nix specific stuff
|
|
||||||
nixd
|
|
||||||
deadnix
|
|
||||||
alejandra
|
|
||||||
statix
|
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,10 +1,7 @@
|
|||||||
{
|
{ lib, pkgs, ... }:
|
||||||
pkgs,
|
lib.mkIf pkgs.stdenv.isDarwin {
|
||||||
lib,
|
home.packages = with pkgs; [
|
||||||
...
|
|
||||||
}: {
|
|
||||||
home.packages = lib.mkIf pkgs.stdenv.isDarwin (with pkgs; [
|
|
||||||
discord
|
discord
|
||||||
ollama
|
ollama
|
||||||
]);
|
];
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,11 +1,11 @@
|
|||||||
|
{ lib, role ? "workstation", ... }:
|
||||||
{
|
{
|
||||||
pkgs,
|
imports =
|
||||||
lib,
|
[
|
||||||
...
|
./common.nix
|
||||||
}: {
|
./darwin.nix
|
||||||
imports = [
|
./linux.nix
|
||||||
./common.nix
|
]
|
||||||
./darwin.nix
|
++ lib.optional (role == "workstation") ./workstation.nix
|
||||||
./linux.nix
|
++ lib.optional (role == "server") ./server.nix;
|
||||||
];
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,21 +1,15 @@
|
|||||||
{
|
{ lib, pkgs, isNixOS ? true, ... }:
|
||||||
pkgs,
|
lib.mkIf pkgs.stdenv.isLinux {
|
||||||
lib,
|
home.packages = with pkgs; [
|
||||||
...
|
|
||||||
}: {
|
|
||||||
home.packages = lib.mkIf pkgs.stdenv.isLinux (with pkgs; [
|
|
||||||
imv
|
imv
|
||||||
betterdiscordctl
|
|
||||||
vesktop
|
|
||||||
xdg-utils
|
xdg-utils
|
||||||
mcrcon
|
] ++ lib.optionals isNixOS [
|
||||||
|
vesktop
|
||||||
xfce.thunar
|
xfce.thunar
|
||||||
pavucontrol
|
pavucontrol
|
||||||
godot
|
|
||||||
aseprite
|
|
||||||
zathura
|
zathura
|
||||||
gpu-screen-recorder
|
gpu-screen-recorder
|
||||||
gpu-screen-recorder-gtk
|
gpu-screen-recorder-gtk
|
||||||
# ungoogled-chromium
|
inetutils
|
||||||
]);
|
];
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,4 @@
|
|||||||
|
{ pkgs, ... }: {
|
||||||
|
home.packages = [
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|||||||
@@ -0,0 +1,33 @@
|
|||||||
|
{
|
||||||
|
lib,
|
||||||
|
pkgs,
|
||||||
|
isNixOS ? true,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
|
imports = [
|
||||||
|
../terminal.nix
|
||||||
|
../browser.nix
|
||||||
|
../zellij.nix
|
||||||
|
../lazygit.nix
|
||||||
|
../k9s.nix
|
||||||
|
../krew.nix
|
||||||
|
../direnv.nix
|
||||||
|
] ++ lib.optional isNixOS ../sway.nix;
|
||||||
|
|
||||||
|
home.packages = with pkgs; [
|
||||||
|
fh
|
||||||
|
kubectl # kube config is deliberately not included
|
||||||
|
kubectx
|
||||||
|
obsidian
|
||||||
|
vscode
|
||||||
|
yt-dlp
|
||||||
|
weechat
|
||||||
|
nodejs
|
||||||
|
cargo
|
||||||
|
python3
|
||||||
|
nixd
|
||||||
|
deadnix
|
||||||
|
alejandra
|
||||||
|
statix
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|||||||
@@ -1,9 +1,11 @@
|
|||||||
{pkgs, lib, ...}: {
|
{pkgs, lib, ...}: {
|
||||||
programs.fish = {
|
programs.fish = {
|
||||||
enable = true;
|
enable = true;
|
||||||
# initExtra = ''
|
shellInit = ''
|
||||||
# export PATH="$PATH:$HOME/bin:$HOME/.local/bin:$HOME/go/bin"
|
if test -d $HOME/.krew/bin
|
||||||
# '';
|
set -gx PATH $HOME/.krew/bin $PATH
|
||||||
|
end
|
||||||
|
'';
|
||||||
|
|
||||||
shellAliases = {
|
shellAliases = {
|
||||||
# ls aliases
|
# ls aliases
|
||||||
@@ -60,7 +62,13 @@
|
|||||||
"If you’ve brought your ivory standard, I’ll be happy to tell you where you can stick it" \
|
"If you’ve brought your ivory standard, I’ll be happy to tell you where you can stick it" \
|
||||||
"Speeches? Oh, yes, I love them. There's nothing like a good exposition when you're having trouble sleeping!" \
|
"Speeches? Oh, yes, I love them. There's nothing like a good exposition when you're having trouble sleeping!" \
|
||||||
"Somehow, the boy just isn't very buoyant" \
|
"Somehow, the boy just isn't very buoyant" \
|
||||||
"I am...not interested, little sun. Try again when you have become a man"
|
"I am...not interested, little sun. Try again when you have become a man" \
|
||||||
|
"I am rightousness! And rightousness shall previal!" \
|
||||||
|
"Ahhh such bliss!" \
|
||||||
|
"The gods themselves will be my meal. Your dear companions my dessert. Upon this world I'll feast, and death shall follow in my wake. All your hate, all your rage, you will render unto me." \
|
||||||
|
"Boring, boring, boring" \
|
||||||
|
"Would you be 'happier' had I a 'good reason'?" \
|
||||||
|
"A test of your reflexes!"
|
||||||
|
|
||||||
|
|
||||||
set choose_meme (random)"%"(count $memes)
|
set choose_meme (random)"%"(count $memes)
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
{
|
{
|
||||||
lib,
|
lib,
|
||||||
pkgs,
|
pkgs,
|
||||||
|
swaytreesave,
|
||||||
...
|
...
|
||||||
}: let
|
}: let
|
||||||
dirs = {
|
dirs = {
|
||||||
@@ -15,6 +16,12 @@
|
|||||||
hash = "sha256-ZDFbI69ECsUTjbhlw2kHRufZbQMu+FQSMmncCJ5pagg=";
|
hash = "sha256-ZDFbI69ECsUTjbhlw2kHRufZbQMu+FQSMmncCJ5pagg=";
|
||||||
};
|
};
|
||||||
in {
|
in {
|
||||||
|
imports = [
|
||||||
|
swaytreesave.homeManagerModules.default
|
||||||
|
];
|
||||||
|
|
||||||
|
programs.swaytreesave.enable = if pkgs.stdenv.isLinux then true else false;
|
||||||
|
|
||||||
wayland.windowManager.sway = {
|
wayland.windowManager.sway = {
|
||||||
enable = pkgs.stdenv.isLinux;
|
enable = pkgs.stdenv.isLinux;
|
||||||
extraOptions = []; # Extra arguments to pass into sway. If sway goes haywire, we might need something in here
|
extraOptions = []; # Extra arguments to pass into sway. If sway goes haywire, we might need something in here
|
||||||
@@ -148,4 +155,5 @@ in {
|
|||||||
enable = pkgs.stdenv.isLinux;
|
enable = pkgs.stdenv.isLinux;
|
||||||
systemd.enable = true;
|
systemd.enable = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
{ lib, pkgs, ghostty, ... }: {
|
{ pkgs, ... }: {
|
||||||
programs.alacritty = {
|
programs.alacritty = {
|
||||||
enable = pkgs.stdenv.isLinux;
|
enable = pkgs.stdenv.isLinux;
|
||||||
settings = {
|
settings = {
|
||||||
@@ -103,9 +103,4 @@
|
|||||||
programs.kitty = {
|
programs.kitty = {
|
||||||
enable = false; # TODO: to enable later
|
enable = false; # TODO: to enable later
|
||||||
};
|
};
|
||||||
|
|
||||||
home.packages = if pkgs.stdenv.isLinux then
|
|
||||||
[ ghostty.packages.${pkgs.system}.default ]
|
|
||||||
else
|
|
||||||
[ ];
|
|
||||||
}
|
}
|
||||||
|
|||||||
0
lib/checkSystem.nix
Normal file
0
lib/checkSystem.nix
Normal file
@@ -3,11 +3,14 @@
|
|||||||
lib,
|
lib,
|
||||||
pkgs,
|
pkgs,
|
||||||
aagl,
|
aagl,
|
||||||
|
vintage-story,
|
||||||
...
|
...
|
||||||
}: let
|
}: let
|
||||||
cfg = config.gaming;
|
cfg = config.gaming;
|
||||||
in {
|
in {
|
||||||
imports = [ aagl.nixosModules.default ];
|
imports = [
|
||||||
|
aagl.nixosModules.default
|
||||||
|
];
|
||||||
|
|
||||||
options.gaming = {
|
options.gaming = {
|
||||||
steam = {
|
steam = {
|
||||||
@@ -142,6 +145,10 @@ in {
|
|||||||
enable = lib.mkEnableOption "Zenless Zone Zero (ZZZ) launcher";
|
enable = lib.mkEnableOption "Zenless Zone Zero (ZZZ) launcher";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
vintage-story = {
|
||||||
|
enable = lib.mkEnableOption "Vintage Story client and server";
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
config = let
|
config = let
|
||||||
@@ -211,6 +218,7 @@ in {
|
|||||||
)) ++
|
)) ++
|
||||||
(lib.optionals cfg.minecraft.enable [pkgs.prismlauncher]) ++
|
(lib.optionals cfg.minecraft.enable [pkgs.prismlauncher]) ++
|
||||||
(lib.optionals cfg.ffxiv.enable [pkgs.xivlauncher pkgs.fflogs]) ++
|
(lib.optionals cfg.ffxiv.enable [pkgs.xivlauncher pkgs.fflogs]) ++
|
||||||
|
(lib.optionals cfg.vintage-story.enable [vintage-story.packages.${pkgs.system}.default]) ++
|
||||||
(lib.optionals cfg.vkbasalt.enable [pkgs.vkbasalt pkgs.vkbasalt-cli]) ++
|
(lib.optionals cfg.vkbasalt.enable [pkgs.vkbasalt pkgs.vkbasalt-cli]) ++
|
||||||
(lib.optionals cfg.mangohud.enable [pkgs.mangohud]) ++
|
(lib.optionals cfg.mangohud.enable [pkgs.mangohud]) ++
|
||||||
(lib.optionals (cfg.vkbasalt.enable || cfg.mangohud.enable) [pkgs.goverlay pkgs.mesa-demos pkgs.vulkan-tools]);
|
(lib.optionals (cfg.vkbasalt.enable || cfg.mangohud.enable) [pkgs.goverlay pkgs.mesa-demos pkgs.vulkan-tools]);
|
||||||
|
|||||||
@@ -1,8 +1,9 @@
|
|||||||
final: prev: let
|
final: prev: let
|
||||||
rust_1_90_0 = prev.rust-bin.stable."1.90.0".default;
|
# Use latest rust from overlay which should work on non-NixOS
|
||||||
|
rust_latest = prev.rust-bin.stable.latest.default;
|
||||||
myRustPlatform = prev.makeRustPlatform {
|
myRustPlatform = prev.makeRustPlatform {
|
||||||
cargo = rust_1_90_0;
|
cargo = rust_latest;
|
||||||
rustc = rust_1_90_0;
|
rustc = rust_latest;
|
||||||
};
|
};
|
||||||
in {
|
in {
|
||||||
lazygitLatest = prev.lazygit.overrideAttrs (_: rec {
|
lazygitLatest = prev.lazygit.overrideAttrs (_: rec {
|
||||||
@@ -47,4 +48,18 @@ in {
|
|||||||
mkdir -p "$XDG_CONFIG_HOME" "$XDG_DATA_HOME" "$XDG_STATE_HOME"
|
mkdir -p "$XDG_CONFIG_HOME" "$XDG_DATA_HOME" "$XDG_STATE_HOME"
|
||||||
'';
|
'';
|
||||||
});
|
});
|
||||||
|
|
||||||
|
# k9sLatest = prev.k9s.overrideAttrs (oldAttrs: rec {
|
||||||
|
# version = "0.30.16";
|
||||||
|
# src = prev.fetchFromGitHub {
|
||||||
|
# owner = "derailed";
|
||||||
|
# repo = "k9s";
|
||||||
|
# rev = "v${version}";
|
||||||
|
# hash = "sha256-1z6r6v3n1p6vd2q6n4pl5q3f7q3q7q1p7j5j1k3l4m5n6o7p8q9r";
|
||||||
|
# };
|
||||||
|
# ldflags = [
|
||||||
|
# "-X github.com/derailed/k9s/version.Version=${version}"
|
||||||
|
# "-X github.com/derailed/k9s/version.BuildSource=nix"
|
||||||
|
# ];
|
||||||
|
# });
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -10,6 +10,10 @@ I like Final Fantasy, alright? Isn't everyone supposed to have a hobby?
|
|||||||
|
|
||||||
These are named after Final Fantasy VII characters.
|
These are named after Final Fantasy VII characters.
|
||||||
|
|
||||||
### Servers/Network Infrastructure
|
### Servers/Network Infrastructure (bare metal)
|
||||||
|
|
||||||
These are named after Final Fantasy summons. There is some infrastructure missing here like my routers and switches that I also name after summons.
|
These are named after Final Fantasy summons. There is some infrastructure missing here like my routers and switches that I also name after summons.
|
||||||
|
|
||||||
|
### Servers/Network Infrastructure (virtual machines)
|
||||||
|
|
||||||
|
These are named after Final Fantasy XIV Online characters (currently, these are named after the Scions of the Seventh Dawn).
|
||||||
|
|||||||
@@ -107,6 +107,7 @@ in {
|
|||||||
ffxiv.enable = true;
|
ffxiv.enable = true;
|
||||||
minecraft.enable = true;
|
minecraft.enable = true;
|
||||||
aagl.anime-game-launcher.enable = true;
|
aagl.anime-game-launcher.enable = true;
|
||||||
|
vintage-story.enable = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
# Power management (see ../../pwrMgmt/default.nix)
|
# Power management (see ../../pwrMgmt/default.nix)
|
||||||
@@ -150,7 +151,7 @@ in {
|
|||||||
};
|
};
|
||||||
|
|
||||||
# Add username to groups "wheel" and "video" - more may be added here later
|
# Add username to groups "wheel" and "video" - more may be added here later
|
||||||
users.users.${userName}.extraGroups = ["wheel" "video" "gamemode" "podman" "network"];
|
users.users.${userName}.extraGroups = ["wheel" "video" "gamemode" "podman" "network" "libvirtd"];
|
||||||
|
|
||||||
services = {
|
services = {
|
||||||
# Enable OpenSSH
|
# Enable OpenSSH
|
||||||
@@ -190,5 +191,23 @@ in {
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
# sched_ext userspace CPU scheduling stuff - idk
|
||||||
|
services.scx = {
|
||||||
|
enable = true;
|
||||||
|
scheduler = "scx_bpfland";
|
||||||
|
};
|
||||||
|
|
||||||
|
programs.obs-studio = {
|
||||||
|
enable = true;
|
||||||
|
plugins = with pkgs.obs-studio-plugins; [
|
||||||
|
wlrobs
|
||||||
|
obs-backgroundremoval
|
||||||
|
obs-pipewire-audio-capture
|
||||||
|
obs-vaapi #optional AMD hardware acceleration
|
||||||
|
obs-gstreamer
|
||||||
|
obs-vkcapture
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
system.stateVersion = "24.11";
|
system.stateVersion = "24.11";
|
||||||
}
|
}
|
||||||
|
|||||||
121
modules/machine/thancred/configuration.nix
Normal file
121
modules/machine/thancred/configuration.nix
Normal file
@@ -0,0 +1,121 @@
|
|||||||
|
{
|
||||||
|
pkgs,
|
||||||
|
userName,
|
||||||
|
vintage-story,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
|
imports = [
|
||||||
|
../../pwrMgmt
|
||||||
|
../../networking/core.nix
|
||||||
|
../../virtualization/podman.nix
|
||||||
|
];
|
||||||
|
|
||||||
|
# Enable flakes for NixOS
|
||||||
|
nix.settings.experimental-features = ["nix-command" "flakes"];
|
||||||
|
|
||||||
|
# Custom kernel/boot stuff
|
||||||
|
boot.kernelPackages = pkgs.linuxPackages_latest;
|
||||||
|
boot.loader.systemd-boot.enable = true;
|
||||||
|
boot.loader.efi.canTouchEfiVariables = true;
|
||||||
|
|
||||||
|
# Set your timezone
|
||||||
|
time.timeZone = "America/Detroit";
|
||||||
|
|
||||||
|
# Enable OpenSSH
|
||||||
|
services.openssh.enable = true;
|
||||||
|
|
||||||
|
# Enable keyring
|
||||||
|
services.gnome.gnome-keyring.enable = true;
|
||||||
|
|
||||||
|
# Enable GnuPG
|
||||||
|
programs.gnupg.agent = {
|
||||||
|
enable = true;
|
||||||
|
enableSSHSupport = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
# Enable SUID wrappers (some programs need them)
|
||||||
|
programs.mtr.enable = true;
|
||||||
|
|
||||||
|
# Enable Polkit
|
||||||
|
security.polkit.enable = true;
|
||||||
|
|
||||||
|
# Power management (see ../../pwrMgmt/default.nix)
|
||||||
|
pwrMgmt = {
|
||||||
|
enable = true;
|
||||||
|
cpuFreqGovernor = "performance";
|
||||||
|
powertop.enable = false;
|
||||||
|
};
|
||||||
|
|
||||||
|
network = {
|
||||||
|
firewall = {
|
||||||
|
enable = true;
|
||||||
|
tcpPorts = {
|
||||||
|
allowedPorts = [ 42420 ];
|
||||||
|
};
|
||||||
|
udpPorts = {
|
||||||
|
allowedPorts = [ 42420 ];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
networkManager.enable = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
environment.systemPackages = [
|
||||||
|
vintage-story.packages.${pkgs.system}.default
|
||||||
|
];
|
||||||
|
|
||||||
|
systemd.services.vintagestory-server = {
|
||||||
|
description = "Vintage Story Server";
|
||||||
|
wantedBy = [ "multi-user.target" ];
|
||||||
|
after = [ "network.target" ];
|
||||||
|
serviceConfig = {
|
||||||
|
Type = "simple";
|
||||||
|
User = userName;
|
||||||
|
WorkingDirectory = "/home/${userName}";
|
||||||
|
ExecStart = "${vintage-story.packages.${pkgs.system}.default}/bin/vintagestory-server";
|
||||||
|
Restart = "on-failure";
|
||||||
|
RestartSec = "5s";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
# Add username to groups "wheel" and "video" - more may be added here later
|
||||||
|
users = {
|
||||||
|
groups.hazel = {};
|
||||||
|
users = {
|
||||||
|
${userName} = {
|
||||||
|
extraGroups = [ "wheel" "network" ];
|
||||||
|
openssh.authorizedKeys.keys = [
|
||||||
|
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIFV9eSc9L+aJLoKoexq2f/jb5rpyZnhuGiyhS8YQAbaS wyatt@wyattjmiller.com"
|
||||||
|
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIO4WKvKnnYpTbzZHFEslOKyfiiMqWxhW3AfX6E7ACmYU wyatt@wyattjmiller.com"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
"hazel" = {
|
||||||
|
home = "/home/hazel";
|
||||||
|
group = "hazel";
|
||||||
|
extraGroups = [ "wheel" ];
|
||||||
|
description = "hazel";
|
||||||
|
isNormalUser = true;
|
||||||
|
openssh.authorizedKeys.keys = [
|
||||||
|
"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDZnyiQx+k1ygX8E1lsUCB6aTdMc+OKzlZ4admlzknc5ulj0YrtUyqhbNhkNd6pP0QDBFMnXO/rzUvHp4TAyZXKFfpcBCa4zhK97ufymAfvzAjM4vRBqRNcr2n+2iRzxtolbklfjs3ocBQVxXW+pRT5wWxTgK2fcmP2xviDVldr7qte37x5YkQb5SAhYNH8tqJRnuGPe+Q0A3oN4HyHZFnrMq/HlbL5yg/0VKPTtF/IgHf+2dDz5OQQpBx3/N9u/QLwuIm9lkyOG03s0TGmE7up/i0jX2vIqp2BbGSnwdQEL/eSVZx73qQB/J62VFafg13P5yQWDJ33WSoiwhac6bg26HPmPOnCJp5R3c+7jM8N1F1ZbtsKicHSVsRg1RQSree4lchPy7FOPkCuUrB7LNE71mbpOzZNR767S6UAPaXxRw6QNYGBaDqQBwhlU8ZDF5F7EW6ahSUMOI6ECyoibzIMb56xs9osuNeUhB/BcL5sHSFpJjIbdcDLNkEKggrBl6s="
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
services.fail2ban = {
|
||||||
|
enable = true;
|
||||||
|
package = pkgs.fail2ban;
|
||||||
|
maxretry = 5;
|
||||||
|
bantime = "3h";
|
||||||
|
bantime-increment = {
|
||||||
|
enable = true;
|
||||||
|
rndtime = "10m";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
services.tailscale = {
|
||||||
|
enable = true;
|
||||||
|
package = pkgs.tailscale;
|
||||||
|
};
|
||||||
|
|
||||||
|
system.stateVersion = "24.11";
|
||||||
|
}
|
||||||
6
modules/machine/thancred/default.nix
Normal file
6
modules/machine/thancred/default.nix
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
{ ... }: {
|
||||||
|
imports = [
|
||||||
|
./configuration.nix
|
||||||
|
./hardware-configuration.nix
|
||||||
|
];
|
||||||
|
}
|
||||||
32
modules/machine/thancred/hardware-configuration.nix
Normal file
32
modules/machine/thancred/hardware-configuration.nix
Normal file
@@ -0,0 +1,32 @@
|
|||||||
|
# Do not modify this file! It was generated by ‘nixos-generate-config’
|
||||||
|
# and may be overwritten by future invocations. Please make changes
|
||||||
|
# to /etc/nixos/configuration.nix instead.
|
||||||
|
{ config, lib, pkgs, modulesPath, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
imports =
|
||||||
|
[ (modulesPath + "/profiles/qemu-guest.nix")
|
||||||
|
];
|
||||||
|
|
||||||
|
boot.initrd.availableKernelModules = [ "ahci" "xhci_pci" "virtio_pci" "virtio_scsi" "sr_mod" "virtio_blk" ];
|
||||||
|
boot.initrd.kernelModules = [ ];
|
||||||
|
boot.kernelModules = [ "kvm-intel" ];
|
||||||
|
boot.extraModulePackages = [ ];
|
||||||
|
|
||||||
|
fileSystems."/" =
|
||||||
|
{ device = "/dev/disk/by-uuid/e2e621c1-0090-472a-99d9-61c6a87bd068";
|
||||||
|
fsType = "ext4";
|
||||||
|
};
|
||||||
|
|
||||||
|
fileSystems."/boot" =
|
||||||
|
{ device = "/dev/disk/by-uuid/663E-15C0";
|
||||||
|
fsType = "vfat";
|
||||||
|
options = [ "fmask=0022" "dmask=0022" ];
|
||||||
|
};
|
||||||
|
|
||||||
|
swapDevices =
|
||||||
|
[ { device = "/dev/disk/by-uuid/60104b1a-4285-4dd1-be5e-3c3dee24515a"; }
|
||||||
|
];
|
||||||
|
|
||||||
|
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
|
||||||
|
}
|
||||||
271
modules/machine/yshtola/configuration.nix
Normal file
271
modules/machine/yshtola/configuration.nix
Normal file
@@ -0,0 +1,271 @@
|
|||||||
|
{
|
||||||
|
pkgs,
|
||||||
|
userName,
|
||||||
|
...
|
||||||
|
}: let
|
||||||
|
# INFO: set these to your liking
|
||||||
|
matrixFqdn = "chat.wyattjmiller.com";
|
||||||
|
rtcFqdn = "rtc.wyattjmiller.com";
|
||||||
|
|
||||||
|
supportEmail = "wyatt@wyattjmiller.com";
|
||||||
|
livekitKeyFile = "/var/lib/livekit/livekit.key";
|
||||||
|
matrixRegistrationTokenFile = "/var/lib/matrix.key";
|
||||||
|
in {
|
||||||
|
imports = [
|
||||||
|
../../pwrMgmt
|
||||||
|
];
|
||||||
|
|
||||||
|
# Enable flakes for NixOS
|
||||||
|
nix.settings.experimental-features = ["nix-command" "flakes"];
|
||||||
|
|
||||||
|
nix.settings = {
|
||||||
|
download-buffer-size = 134217728; # 128 MiB in bytes
|
||||||
|
};
|
||||||
|
|
||||||
|
# Custom kernel/boot stuff
|
||||||
|
boot.kernelPackages = pkgs.linuxPackages_latest;
|
||||||
|
|
||||||
|
# Set your timezone
|
||||||
|
time.timeZone = "America/Detroit";
|
||||||
|
|
||||||
|
# Enable OpenSSH
|
||||||
|
services.openssh = {
|
||||||
|
enable = true;
|
||||||
|
settings.PermitRootLogin = "no";
|
||||||
|
settings.PasswordAuthentication = false;
|
||||||
|
};
|
||||||
|
|
||||||
|
# Enable keyring
|
||||||
|
services.gnome.gnome-keyring.enable = true;
|
||||||
|
|
||||||
|
# Enable GnuPG
|
||||||
|
programs.gnupg.agent = {
|
||||||
|
enable = true;
|
||||||
|
enableSSHSupport = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
# Enable SUID wrappers (some programs need them)
|
||||||
|
programs.mtr.enable = true;
|
||||||
|
|
||||||
|
# Enable Polkit
|
||||||
|
security.polkit.enable = true;
|
||||||
|
|
||||||
|
# Power management (see ../../pwrMgmt/default.nix)
|
||||||
|
pwrMgmt = {
|
||||||
|
enable = true;
|
||||||
|
cpuFreqGovernor = "performance";
|
||||||
|
powertop.enable = false;
|
||||||
|
};
|
||||||
|
|
||||||
|
# Firewall settings (fallback, upstream way of doing things)
|
||||||
|
networking.firewall = {
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
allowedTCPPorts = [
|
||||||
|
80
|
||||||
|
443
|
||||||
|
8448
|
||||||
|
3478
|
||||||
|
5349
|
||||||
|
7880
|
||||||
|
7881
|
||||||
|
8080
|
||||||
|
8081
|
||||||
|
];
|
||||||
|
|
||||||
|
allowedUDPPorts = [
|
||||||
|
3478
|
||||||
|
7881
|
||||||
|
8448
|
||||||
|
];
|
||||||
|
|
||||||
|
allowedUDPPortRanges =[
|
||||||
|
# TURN UDP relays
|
||||||
|
{
|
||||||
|
from = 49000;
|
||||||
|
to = 50000;
|
||||||
|
}
|
||||||
|
#
|
||||||
|
{
|
||||||
|
from = 50100;
|
||||||
|
to = 50200;
|
||||||
|
}
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
# Add username to groups "wheel" and "video" - more may be added here later
|
||||||
|
users.users.${userName} = {
|
||||||
|
openssh.authorizedKeys.keys = [
|
||||||
|
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIFV9eSc9L+aJLoKoexq2f/jb5rpyZnhuGiyhS8YQAbaS wyatt@wyattjmiller.com"
|
||||||
|
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIO4WKvKnnYpTbzZHFEslOKyfiiMqWxhW3AfX6E7ACmYU wyatt@wyattjmiller.com"
|
||||||
|
];
|
||||||
|
extraGroups = ["wheel" "video" "network"];
|
||||||
|
};
|
||||||
|
|
||||||
|
# fail2ban
|
||||||
|
services.fail2ban = {
|
||||||
|
enable = true;
|
||||||
|
package = pkgs.fail2ban;
|
||||||
|
maxretry = 5;
|
||||||
|
bantime = "3h";
|
||||||
|
bantime-increment = {
|
||||||
|
enable = true;
|
||||||
|
rndtime = "10m";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
# Matrix server
|
||||||
|
services.matrix-tuwunel = {
|
||||||
|
enable = true;
|
||||||
|
package = pkgs.matrix-tuwunel;
|
||||||
|
settings = {
|
||||||
|
global = {
|
||||||
|
server_name = matrixFqdn;
|
||||||
|
allow_encryption = true;
|
||||||
|
allow_federation = true;
|
||||||
|
allow_registration = true;
|
||||||
|
registration_token = matrixRegistrationTokenFile;
|
||||||
|
allow_unstable_room_versions = false;
|
||||||
|
allow_experimental_room_versions = false;
|
||||||
|
zstd_compression = true;
|
||||||
|
new_user_displayname_suffix = "✨";
|
||||||
|
max_request_size = 1048575600; # 100MB in bytes, for file uploads
|
||||||
|
database_backup_path = "/var/lib/tuwunel/database_backups";
|
||||||
|
database_backups_to_keep = 2;
|
||||||
|
|
||||||
|
address = [
|
||||||
|
"127.0.0.1"
|
||||||
|
"::1"
|
||||||
|
];
|
||||||
|
port = [ 8008 ];
|
||||||
|
|
||||||
|
well_known = {
|
||||||
|
client = "https://${matrixFqdn}";
|
||||||
|
server = "${matrixFqdn}:443";
|
||||||
|
support_email = supportEmail;
|
||||||
|
support_mxid = "@wymiller:${matrixFqdn}";
|
||||||
|
|
||||||
|
rtc_transports = [{
|
||||||
|
type = "livekit";
|
||||||
|
livekit_service_url = "https://${rtcFqdn}";
|
||||||
|
}];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
# LiveKit (Matrix RTC)
|
||||||
|
services.livekit = {
|
||||||
|
enable = true;
|
||||||
|
package = pkgs.livekit;
|
||||||
|
openFirewall = true;
|
||||||
|
keyFile = livekitKeyFile;
|
||||||
|
settings = {
|
||||||
|
port = 7880;
|
||||||
|
room.auto_create = true;
|
||||||
|
rtc = {
|
||||||
|
use_external_ip = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
# Reverse proxy
|
||||||
|
services.caddy = {
|
||||||
|
enable = true;
|
||||||
|
package = pkgs.caddy;
|
||||||
|
virtualHosts = {
|
||||||
|
"${matrixFqdn}" = {
|
||||||
|
extraConfig = ''
|
||||||
|
encode zstd gzip
|
||||||
|
reverse_proxy localhost:8008
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
"${matrixFqdn}:8448" = {
|
||||||
|
extraConfig = ''
|
||||||
|
encode zstd gzip
|
||||||
|
reverse_proxy localhost:8008
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
"${rtcFqdn}" = {
|
||||||
|
extraConfig = ''
|
||||||
|
@jwt_service {
|
||||||
|
path /sfu/get* /healthz*
|
||||||
|
}
|
||||||
|
|
||||||
|
handle @jwt_service {
|
||||||
|
reverse_proxy localhost:8080
|
||||||
|
}
|
||||||
|
|
||||||
|
handle {
|
||||||
|
reverse_proxy localhost:7880 {
|
||||||
|
header_up Connection "upgrade"
|
||||||
|
header_up Upgrade {http.request.header.Upgrade}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
# LiveKit JWT service
|
||||||
|
services.lk-jwt-service = {
|
||||||
|
enable = true;
|
||||||
|
port = 8080;
|
||||||
|
livekitUrl = "wss://rtc.wyattjmiller.com";
|
||||||
|
keyFile = livekitKeyFile;
|
||||||
|
};
|
||||||
|
|
||||||
|
# Generate LiveKit key if it doesn't exist
|
||||||
|
systemd.services = {
|
||||||
|
matrix-registration-token-gen = {
|
||||||
|
before = [ "tuwunel.service" ];
|
||||||
|
wantedBy = [ "multi-user.target" ];
|
||||||
|
path = with pkgs; [ coreutils openssl ];
|
||||||
|
script = ''
|
||||||
|
set -eu
|
||||||
|
|
||||||
|
if [ -f "${matrixRegistrationTokenFile}" ]; then
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
install -d -m 0700 "$(dirname "${matrixRegistrationTokenFile}")"
|
||||||
|
|
||||||
|
TOKEN="$(openssl rand -hex 32)"
|
||||||
|
|
||||||
|
umask 077
|
||||||
|
printf '%s\n' "$TOKEN" > "${matrixRegistrationTokenFile}"
|
||||||
|
'';
|
||||||
|
serviceConfig = {
|
||||||
|
Type = "oneshot";
|
||||||
|
User = "root";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
livekit-key-gen = {
|
||||||
|
before = [ "lk-jwt-service.service" "livekit.service" ];
|
||||||
|
wantedBy = [ "multi-user.target" ];
|
||||||
|
path = with pkgs; [ coreutils openssl ];
|
||||||
|
script = ''
|
||||||
|
set -eu
|
||||||
|
|
||||||
|
if [ -f "${livekitKeyFile}" ]; then
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
install -d -m 0700 "$(dirname "${livekitKeyFile}")"
|
||||||
|
|
||||||
|
API_KEY="$(openssl rand -hex 8)"
|
||||||
|
API_SECRET="$(openssl rand -hex 32)"
|
||||||
|
|
||||||
|
umask 077
|
||||||
|
printf '%s: %s\n' "$API_KEY" "$API_SECRET" > "${livekitKeyFile}"
|
||||||
|
'';
|
||||||
|
serviceConfig = {
|
||||||
|
Type = "oneshot";
|
||||||
|
User = "root";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
system.stateVersion = "25.11";
|
||||||
|
}
|
||||||
6
modules/machine/yshtola/default.nix
Normal file
6
modules/machine/yshtola/default.nix
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
{ ... }: {
|
||||||
|
imports = [
|
||||||
|
./configuration.nix
|
||||||
|
./hardware-configuration.nix
|
||||||
|
];
|
||||||
|
}
|
||||||
35
modules/machine/yshtola/hardware-configuration.nix
Normal file
35
modules/machine/yshtola/hardware-configuration.nix
Normal file
@@ -0,0 +1,35 @@
|
|||||||
|
# Do not modify this file! It was generated by ‘nixos-generate-config’
|
||||||
|
# and may be overwritten by future invocations. Please make changes
|
||||||
|
# to /etc/nixos/configuration.nix instead.
|
||||||
|
{ config, lib, pkgs, modulesPath, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
imports =
|
||||||
|
[ (modulesPath + "/profiles/qemu-guest.nix")
|
||||||
|
];
|
||||||
|
|
||||||
|
boot.initrd.availableKernelModules = [ "virtio_pci" "virtio_scsi" "ahci" "sd_mod" ];
|
||||||
|
boot.kernelParams = [ "console=ttyS0,19200n8" ];
|
||||||
|
boot.kernelModules = [ ];
|
||||||
|
boot.extraModulePackages = [ ];
|
||||||
|
boot.loader.grub.extraConfig = ''
|
||||||
|
serial --speed=19200 --unit=0 --word=8 --parity=no --stop=1;
|
||||||
|
terminal_input serial;
|
||||||
|
terminal_output serial;
|
||||||
|
'';
|
||||||
|
boot.loader.grub.forceInstall = true;
|
||||||
|
# boot.loader.grub.enable = true;
|
||||||
|
boot.loader.grub.device = "nodev";
|
||||||
|
boot.loader.timeout = 10;
|
||||||
|
|
||||||
|
fileSystems."/" =
|
||||||
|
{ device = "/dev/sda";
|
||||||
|
fsType = "ext4";
|
||||||
|
};
|
||||||
|
|
||||||
|
swapDevices =
|
||||||
|
[ { device = "/dev/sdb"; }
|
||||||
|
];
|
||||||
|
|
||||||
|
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
|
||||||
|
}
|
||||||
@@ -1,6 +1,8 @@
|
|||||||
{ pkgs, ... }: {
|
{ pkgs, ... }: {
|
||||||
virtualisation.libvirtd.enable = true;
|
virtualisation.libvirtd.enable = true;
|
||||||
programs.virt-manager.enable = true;
|
programs.virt-manager.enable = true;
|
||||||
|
services.qemuGuest.enable = true;
|
||||||
|
services.spice-vdagentd.enable = true;
|
||||||
environment.systemPackages = with pkgs; [
|
environment.systemPackages = with pkgs; [
|
||||||
qemu
|
qemu
|
||||||
quickemu
|
quickemu
|
||||||
|
|||||||
Reference in New Issue
Block a user