Compare commits
1 Commits
dd9439b7fa
...
fastback-s
Author | SHA1 | Date | |
---|---|---|---|
ab25c07f69 |
@@ -20,7 +20,7 @@ in
|
|||||||
[ -e "${homeFlake}" ] && echo "${homeFlake} already exists" && exit 1
|
[ -e "${homeFlake}" ] && echo "${homeFlake} already exists" && exit 1
|
||||||
|
|
||||||
mkdir -p "$(dirname "${homeFlake}")"
|
mkdir -p "$(dirname "${homeFlake}")"
|
||||||
ln -sf "$(pwd)/flake.nix" "${homeFlake}"
|
ln -s "$(pwd)/flake.nix" "${homeFlake}"
|
||||||
echo "Installed link to $(pwd)/flake.nix at ${homeFlake}"
|
echo "Installed link to $(pwd)/flake.nix at ${homeFlake}"
|
||||||
'';
|
'';
|
||||||
}
|
}
|
||||||
@@ -52,7 +52,7 @@ in
|
|||||||
name = "json2nix";
|
name = "json2nix";
|
||||||
category = "utilities";
|
category = "utilities";
|
||||||
help = "Convert JSON to formatted Nix";
|
help = "Convert JSON to formatted Nix";
|
||||||
command = "nix eval --impure --expr 'builtins.fromJSON (builtins.readFile /dev/stdin)' | ${pkgs.nixfmt-rfc-style}/bin/nixfmt";
|
command = "nix eval --impure --expr 'builtins.fromJSON (builtins.readFile /dev/stdin)' | ${pkgs.nixfmt}/bin/nixfmt";
|
||||||
}
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
|
516
flake.lock
generated
516
flake.lock
generated
@@ -3,19 +3,17 @@
|
|||||||
"agenix": {
|
"agenix": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"darwin": "darwin",
|
"darwin": "darwin",
|
||||||
"home-manager": "home-manager",
|
|
||||||
"nixpkgs": [
|
"nixpkgs": [
|
||||||
"ragenix",
|
"ragenix",
|
||||||
"nixpkgs"
|
"nixpkgs"
|
||||||
],
|
]
|
||||||
"systems": "systems_8"
|
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1707830867,
|
"lastModified": 1682101079,
|
||||||
"narHash": "sha256-PAdwm5QqdlwIqGrfzzvzZubM+FXtilekQ/FA0cI49/o=",
|
"narHash": "sha256-MdAhtjrLKnk2uiqun1FWABbKpLH090oeqCSiWemtuck=",
|
||||||
"owner": "ryantm",
|
"owner": "ryantm",
|
||||||
"repo": "agenix",
|
"repo": "agenix",
|
||||||
"rev": "8cb01a0e717311680e0cbca06a76cbceba6f3ed6",
|
"rev": "2994d002dcff5353ca1ac48ec584c7f6589fe447",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -37,11 +35,11 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1711742460,
|
"lastModified": 1702969472,
|
||||||
"narHash": "sha256-0O4v6e4a1toxXZ2gf5INhg4WPE5C5T+SVvsBt+45Mcc=",
|
"narHash": "sha256-IJP9sC+/gLUdWhm6TsnWpw6A1zQWUfn53ym63KeLXvU=",
|
||||||
"owner": "zhaofengli",
|
"owner": "zhaofengli",
|
||||||
"repo": "attic",
|
"repo": "attic",
|
||||||
"rev": "4dbdbee45728d8ce5788db6461aaaa89d98081f0",
|
"rev": "bdafd64910bb2b861cf90fa15f1fc93318b6fbf6",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -60,17 +58,17 @@
|
|||||||
"poetry2nix": "poetry2nix"
|
"poetry2nix": "poetry2nix"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1718746012,
|
"lastModified": 1682289679,
|
||||||
"narHash": "sha256-sp9vGl3vWXvD/C2JeMDi5nbW6CkKIC3Q2JMGKwexYEs=",
|
"narHash": "sha256-DbhSJ6y62VAO2VsJwoz3VsxCEP/4KMeFVs0wIz6Im04=",
|
||||||
"ref": "refs/heads/master",
|
"owner": "devplayer0",
|
||||||
"rev": "ea24100bd4a914b9e044a2085a3785a6bd3a3833",
|
"repo": "boardie",
|
||||||
"revCount": 5,
|
"rev": "e4b977f75bf7b4f656a691efca492ae057672a77",
|
||||||
"type": "git",
|
"type": "github"
|
||||||
"url": "https://git.nul.ie/dev/boardie"
|
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
"type": "git",
|
"owner": "devplayer0",
|
||||||
"url": "https://git.nul.ie/dev/boardie"
|
"repo": "boardie",
|
||||||
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"borgthin": {
|
"borgthin": {
|
||||||
@@ -118,17 +116,26 @@
|
|||||||
},
|
},
|
||||||
"crane_2": {
|
"crane_2": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
|
"flake-compat": "flake-compat_3",
|
||||||
|
"flake-utils": [
|
||||||
|
"ragenix",
|
||||||
|
"flake-utils"
|
||||||
|
],
|
||||||
"nixpkgs": [
|
"nixpkgs": [
|
||||||
"ragenix",
|
"ragenix",
|
||||||
"nixpkgs"
|
"nixpkgs"
|
||||||
|
],
|
||||||
|
"rust-overlay": [
|
||||||
|
"ragenix",
|
||||||
|
"rust-overlay"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1708794349,
|
"lastModified": 1681680516,
|
||||||
"narHash": "sha256-jX+B1VGHT0ruHHL5RwS8L21R6miBn4B6s9iVyUJsJJY=",
|
"narHash": "sha256-EB8Adaeg4zgcYDJn9sR6UMjN/OHdIiMMK19+3LmmXQY=",
|
||||||
"owner": "ipetkov",
|
"owner": "ipetkov",
|
||||||
"repo": "crane",
|
"repo": "crane",
|
||||||
"rev": "2c94ff9a6fbeb9f3ea0107f28688edbe9c81deaa",
|
"rev": "54b63c8eae4c50172cb50b612946ff1d2bc1c75c",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -146,11 +153,11 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1700795494,
|
"lastModified": 1673295039,
|
||||||
"narHash": "sha256-gzGLZSiOhf155FW7262kdHo2YDeugp3VuIFb4/GGng0=",
|
"narHash": "sha256-AsdYgE8/GPwcelGgrntlijMg4t3hLFJFCRF3tL5WVjA=",
|
||||||
"owner": "lnl7",
|
"owner": "lnl7",
|
||||||
"repo": "nix-darwin",
|
"repo": "nix-darwin",
|
||||||
"rev": "4b9b83d5a92e8c1fbfd8eb27eda375908c11ec4d",
|
"rev": "87b9d090ad39b25b2400029c64825fc2a8868943",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -169,11 +176,11 @@
|
|||||||
"utils": "utils"
|
"utils": "utils"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1715699772,
|
"lastModified": 1703087360,
|
||||||
"narHash": "sha256-sKhqIgucN5sI/7UQgBwsonzR4fONjfMr9OcHK/vPits=",
|
"narHash": "sha256-0VUbWBW8VyiDRuimMuLsEO4elGuUw/nc2WDeuO1eN1M=",
|
||||||
"owner": "serokell",
|
"owner": "serokell",
|
||||||
"repo": "deploy-rs",
|
"repo": "deploy-rs",
|
||||||
"rev": "b3ea6f333f9057b77efd9091119ba67089399ced",
|
"rev": "b709d63debafce9f5645a5ba550c9e0983b3d1f7",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -188,11 +195,11 @@
|
|||||||
"nixpkgs": "nixpkgs"
|
"nixpkgs": "nixpkgs"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1717408969,
|
"lastModified": 1678957337,
|
||||||
"narHash": "sha256-Q0OEFqe35fZbbRPPRdrjTUUChKVhhWXz3T9ZSKmaoVY=",
|
"narHash": "sha256-Gw4nVbuKRdTwPngeOZQOzH/IFowmz4LryMPDiJN/ah4=",
|
||||||
"owner": "numtide",
|
"owner": "numtide",
|
||||||
"repo": "devshell",
|
"repo": "devshell",
|
||||||
"rev": "1ebbe68d57457c8cae98145410b164b5477761f4",
|
"rev": "3e0e60ab37cd0bf7ab59888f5c32499d851edb47",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -201,25 +208,6 @@
|
|||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"devshell-tools": {
|
|
||||||
"inputs": {
|
|
||||||
"flake-utils": "flake-utils_11",
|
|
||||||
"nixpkgs": "nixpkgs_4"
|
|
||||||
},
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1710099997,
|
|
||||||
"narHash": "sha256-WmBKTLdth6I/D+0//9enbIXohGsBjepbjIAm9pCYj0U=",
|
|
||||||
"owner": "eikek",
|
|
||||||
"repo": "devshell-tools",
|
|
||||||
"rev": "e82faf976d318b3829f6f7f6785db6f3c7b65267",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "eikek",
|
|
||||||
"repo": "devshell-tools",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"devshell_2": {
|
"devshell_2": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"flake-utils": "flake-utils_5",
|
"flake-utils": "flake-utils_5",
|
||||||
@@ -241,17 +229,17 @@
|
|||||||
},
|
},
|
||||||
"devshell_3": {
|
"devshell_3": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"flake-utils": "flake-utils_7",
|
|
||||||
"nixpkgs": [
|
"nixpkgs": [
|
||||||
"nixpkgs-unstable"
|
"nixpkgs-unstable"
|
||||||
]
|
],
|
||||||
|
"systems": "systems_4"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1713532798,
|
"lastModified": 1701787589,
|
||||||
"narHash": "sha256-wtBhsdMJA3Wa32Wtm1eeo84GejtI43pMrFrmwLXrsEc=",
|
"narHash": "sha256-ce+oQR4Zq9VOsLoh9bZT8Ip9PaMLcjjBUHVPzW5d7Cw=",
|
||||||
"owner": "numtide",
|
"owner": "numtide",
|
||||||
"repo": "devshell",
|
"repo": "devshell",
|
||||||
"rev": "12e914740a25ea1891ec619bb53cf5e6ca922e40",
|
"rev": "44ddedcbcfc2d52a76b64fb6122f209881bd3e1e",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -292,6 +280,22 @@
|
|||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"flake-compat_3": {
|
||||||
|
"flake": false,
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1673956053,
|
||||||
|
"narHash": "sha256-4gtG9iQuiKITOjNQQeQIpoIB6b16fm+504Ch3sNKLd8=",
|
||||||
|
"owner": "edolstra",
|
||||||
|
"repo": "flake-compat",
|
||||||
|
"rev": "35bb57c0c8d8b62bbfd284272c928ceb64ddbde9",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "edolstra",
|
||||||
|
"repo": "flake-compat",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
"flake-utils": {
|
"flake-utils": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1667395993,
|
"lastModified": 1667395993,
|
||||||
@@ -308,60 +312,6 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"flake-utils_10": {
|
"flake-utils_10": {
|
||||||
"inputs": {
|
|
||||||
"systems": "systems_9"
|
|
||||||
},
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1705309234,
|
|
||||||
"narHash": "sha256-uNRRNRKmJyCRC/8y1RqBkqWBLM034y4qN7EprSdmgyA=",
|
|
||||||
"owner": "numtide",
|
|
||||||
"repo": "flake-utils",
|
|
||||||
"rev": "1ef2e671c3b0c19053962c07dbda38332dcebf26",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "numtide",
|
|
||||||
"repo": "flake-utils",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"flake-utils_11": {
|
|
||||||
"inputs": {
|
|
||||||
"systems": "systems_10"
|
|
||||||
},
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1709126324,
|
|
||||||
"narHash": "sha256-q6EQdSeUZOG26WelxqkmR7kArjgWCdw5sfJVHPH/7j8=",
|
|
||||||
"owner": "numtide",
|
|
||||||
"repo": "flake-utils",
|
|
||||||
"rev": "d465f4819400de7c8d874d50b982301f28a84605",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "numtide",
|
|
||||||
"repo": "flake-utils",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"flake-utils_12": {
|
|
||||||
"inputs": {
|
|
||||||
"systems": "systems_11"
|
|
||||||
},
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1705309234,
|
|
||||||
"narHash": "sha256-uNRRNRKmJyCRC/8y1RqBkqWBLM034y4qN7EprSdmgyA=",
|
|
||||||
"owner": "numtide",
|
|
||||||
"repo": "flake-utils",
|
|
||||||
"rev": "1ef2e671c3b0c19053962c07dbda38332dcebf26",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "numtide",
|
|
||||||
"repo": "flake-utils",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"flake-utils_13": {
|
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1667395993,
|
"lastModified": 1667395993,
|
||||||
"narHash": "sha256-nuEHfE/LcWyuSWnS8t12N1wc105Qtau+/OdUAjtQ0rA=",
|
"narHash": "sha256-nuEHfE/LcWyuSWnS8t12N1wc105Qtau+/OdUAjtQ0rA=",
|
||||||
@@ -377,15 +327,12 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"flake-utils_2": {
|
"flake-utils_2": {
|
||||||
"inputs": {
|
|
||||||
"systems": "systems"
|
|
||||||
},
|
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1701680307,
|
"lastModified": 1642700792,
|
||||||
"narHash": "sha256-kAuep2h5ajznlPMD9rnQyffWG8EM/C73lejGofXvdM8=",
|
"narHash": "sha256-XqHrk7hFb+zBvRg6Ghl+AZDq03ov6OshJLiSWOoX5es=",
|
||||||
"owner": "numtide",
|
"owner": "numtide",
|
||||||
"repo": "flake-utils",
|
"repo": "flake-utils",
|
||||||
"rev": "4022d587cbbfd70fe950c1e2083a02621806a725",
|
"rev": "846b2ae0fc4cc943637d3d1def4454213e203cba",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -396,14 +343,14 @@
|
|||||||
},
|
},
|
||||||
"flake-utils_3": {
|
"flake-utils_3": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"systems": "systems_2"
|
"systems": "systems"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1710146030,
|
"lastModified": 1681202837,
|
||||||
"narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=",
|
"narHash": "sha256-H+Rh19JDwRtpVPAWp64F+rlEtxUWBAQW28eAi3SRSzg=",
|
||||||
"owner": "numtide",
|
"owner": "numtide",
|
||||||
"repo": "flake-utils",
|
"repo": "flake-utils",
|
||||||
"rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a",
|
"rev": "cfacdce06f30d2b68473a46042957675eebb3401",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -414,14 +361,14 @@
|
|||||||
},
|
},
|
||||||
"flake-utils_4": {
|
"flake-utils_4": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"systems": "systems_3"
|
"systems": "systems_2"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1710146030,
|
"lastModified": 1681202837,
|
||||||
"narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=",
|
"narHash": "sha256-H+Rh19JDwRtpVPAWp64F+rlEtxUWBAQW28eAi3SRSzg=",
|
||||||
"owner": "numtide",
|
"owner": "numtide",
|
||||||
"repo": "flake-utils",
|
"repo": "flake-utils",
|
||||||
"rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a",
|
"rev": "cfacdce06f30d2b68473a46042957675eebb3401",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -462,7 +409,7 @@
|
|||||||
},
|
},
|
||||||
"flake-utils_7": {
|
"flake-utils_7": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"systems": "systems_6"
|
"systems": "systems_5"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1701680307,
|
"lastModified": 1701680307,
|
||||||
@@ -479,24 +426,6 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"flake-utils_8": {
|
"flake-utils_8": {
|
||||||
"inputs": {
|
|
||||||
"systems": "systems_7"
|
|
||||||
},
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1710146030,
|
|
||||||
"narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=",
|
|
||||||
"owner": "numtide",
|
|
||||||
"repo": "flake-utils",
|
|
||||||
"rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "numtide",
|
|
||||||
"repo": "flake-utils",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"flake-utils_9": {
|
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1659877975,
|
"lastModified": 1659877975,
|
||||||
"narHash": "sha256-zllb8aq3YO3h8B/U0/J1WBgAL8EX5yWf5pMj3G0NAmc=",
|
"narHash": "sha256-zllb8aq3YO3h8B/U0/J1WBgAL8EX5yWf5pMj3G0NAmc=",
|
||||||
@@ -511,25 +440,21 @@
|
|||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"home-manager": {
|
"flake-utils_9": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"nixpkgs": [
|
"systems": "systems_6"
|
||||||
"ragenix",
|
|
||||||
"agenix",
|
|
||||||
"nixpkgs"
|
|
||||||
]
|
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1703113217,
|
"lastModified": 1681202837,
|
||||||
"narHash": "sha256-7ulcXOk63TIT2lVDSExj7XzFx09LpdSAPtvgtM7yQPE=",
|
"narHash": "sha256-H+Rh19JDwRtpVPAWp64F+rlEtxUWBAQW28eAi3SRSzg=",
|
||||||
"owner": "nix-community",
|
"owner": "numtide",
|
||||||
"repo": "home-manager",
|
"repo": "flake-utils",
|
||||||
"rev": "3bfaacf46133c037bb356193bd2f1765d9dc82c1",
|
"rev": "cfacdce06f30d2b68473a46042957675eebb3401",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
"owner": "nix-community",
|
"owner": "numtide",
|
||||||
"repo": "home-manager",
|
"repo": "flake-utils",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@@ -540,11 +465,11 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1716729592,
|
"lastModified": 1703367386,
|
||||||
"narHash": "sha256-Y3bOjoh2cFBqZN0Jw1zUdyr7tjygyxl2bD/QY73GZP0=",
|
"narHash": "sha256-FMbm48UGrBfOWGt8+opuS+uLBLQlRfhiYXhHNcYMS5k=",
|
||||||
"owner": "nix-community",
|
"owner": "nix-community",
|
||||||
"repo": "home-manager",
|
"repo": "home-manager",
|
||||||
"rev": "2c78a57c544dd19b07442350727ced097e1aa6e6",
|
"rev": "d5824a76bc6bb93d1dce9ebbbcb09a9b6abcc224",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -560,11 +485,11 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1717097707,
|
"lastModified": 1703754036,
|
||||||
"narHash": "sha256-HC5vJ3oYsjwsCaSbkIPv80e4ebJpNvFKQTBOGlHvjLs=",
|
"narHash": "sha256-JpJdcj9Tg4lMuYikXDpajA8wOp+rHyn9RD2rKBEM4cQ=",
|
||||||
"owner": "nix-community",
|
"owner": "nix-community",
|
||||||
"repo": "home-manager",
|
"repo": "home-manager",
|
||||||
"rev": "0eb314b4f0ba337e88123e0b1e57ef58346aafd9",
|
"rev": "c24c298562fe41b39909f632c5a7151bbf6b4628",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -574,11 +499,11 @@
|
|||||||
},
|
},
|
||||||
"impermanence": {
|
"impermanence": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1708968331,
|
"lastModified": 1703656108,
|
||||||
"narHash": "sha256-VUXLaPusCBvwM3zhGbRIJVeYluh2uWuqtj4WirQ1L9Y=",
|
"narHash": "sha256-hCSUqdFJKHHbER8Cenf5JRzjMlBjIdwdftGQsO0xoJs=",
|
||||||
"owner": "nix-community",
|
"owner": "nix-community",
|
||||||
"repo": "impermanence",
|
"repo": "impermanence",
|
||||||
"rev": "a33ef102a02ce77d3e39c25197664b7a636f9c30",
|
"rev": "033643a45a4a920660ef91caa391fbffb14da466",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -587,41 +512,19 @@
|
|||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"nix-github-actions": {
|
|
||||||
"inputs": {
|
|
||||||
"nixpkgs": [
|
|
||||||
"boardie",
|
|
||||||
"poetry2nix",
|
|
||||||
"nixpkgs"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1703863825,
|
|
||||||
"narHash": "sha256-rXwqjtwiGKJheXB43ybM8NwWB8rO2dSRrEqes0S7F5Y=",
|
|
||||||
"owner": "nix-community",
|
|
||||||
"repo": "nix-github-actions",
|
|
||||||
"rev": "5163432afc817cf8bd1f031418d1869e4c9d5547",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "nix-community",
|
|
||||||
"repo": "nix-github-actions",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"nixGL": {
|
"nixGL": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"flake-utils": "flake-utils_9",
|
"flake-utils": "flake-utils_8",
|
||||||
"nixpkgs": [
|
"nixpkgs": [
|
||||||
"nixpkgs-unstable"
|
"nixpkgs-unstable"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1713543440,
|
"lastModified": 1685908677,
|
||||||
"narHash": "sha256-lnzZQYG0+EXl/6NkGpyIz+FEOc/DSEG57AP1VsdeNrM=",
|
"narHash": "sha256-E4zUPEUFyVWjVm45zICaHRpfGepfkE9Z2OECV9HXfA4=",
|
||||||
"owner": "nix-community",
|
"owner": "nix-community",
|
||||||
"repo": "nixGL",
|
"repo": "nixGL",
|
||||||
"rev": "310f8e49a149e4c9ea52f1adf70cdc768ec53f8a",
|
"rev": "489d6b095ab9d289fe11af0219a9ff00fe87c7c5",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -632,11 +535,11 @@
|
|||||||
},
|
},
|
||||||
"nixpkgs": {
|
"nixpkgs": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1704161960,
|
"lastModified": 1677383253,
|
||||||
"narHash": "sha256-QGua89Pmq+FBAro8NriTuoO/wNaUtugt29/qqA8zeeM=",
|
"narHash": "sha256-UfpzWfSxkfXHnb4boXZNaKsAcUrZT9Hw+tao1oZxd08=",
|
||||||
"owner": "NixOS",
|
"owner": "NixOS",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "63143ac2c9186be6d9da6035fa22620018c85932",
|
"rev": "9952d6bc395f5841262b006fbace8dd7e143b634",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -648,11 +551,11 @@
|
|||||||
},
|
},
|
||||||
"nixpkgs-mine": {
|
"nixpkgs-mine": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1717628902,
|
"lastModified": 1703756459,
|
||||||
"narHash": "sha256-qMAW+oKis3F8jXTjX9Ng02/LzZd+7YOK05Qa33h9yqY=",
|
"narHash": "sha256-ztEMyPQZh3Pb+LOoWl5lbIK2LenP59sOUBC86CDmLio=",
|
||||||
"owner": "devplayer0",
|
"owner": "devplayer0",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "3e0ee08114e1563b1a0fd6a907563b5e86258fb4",
|
"rev": "e80160eb2ac3a7111d07cc43a15c16b9edca01ea",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -664,11 +567,11 @@
|
|||||||
},
|
},
|
||||||
"nixpkgs-mine-stable": {
|
"nixpkgs-mine-stable": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1717245305,
|
"lastModified": 1703756491,
|
||||||
"narHash": "sha256-LrIS3+Aa4F2VmuJPQOASRd3W+uToj878PoUKSLVw/vE=",
|
"narHash": "sha256-9VL34e0gzomwqRnryRn23V2ImYcaZIQdp7CsWg5TmlE=",
|
||||||
"owner": "devplayer0",
|
"owner": "devplayer0",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "17a50249712512f600eced89bebcc3252b5f630f",
|
"rev": "36611f5f7cfd401f51ad4ca76fd6ee85a714bb74",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -680,11 +583,11 @@
|
|||||||
},
|
},
|
||||||
"nixpkgs-stable": {
|
"nixpkgs-stable": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1716991068,
|
"lastModified": 1703467016,
|
||||||
"narHash": "sha256-Av0UWCCiIGJxsZ6TFc+OiKCJNqwoxMNVYDBChmhjNpo=",
|
"narHash": "sha256-/5A/dNPhbQx/Oa2d+Get174eNI3LERQ7u6WTWOlR1eQ=",
|
||||||
"owner": "NixOS",
|
"owner": "NixOS",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "25cf937a30bf0801447f6bf544fc7486c6309234",
|
"rev": "d02d818f22c777aa4e854efc3242ec451e5d462a",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -695,11 +598,11 @@
|
|||||||
},
|
},
|
||||||
"nixpkgs-unstable": {
|
"nixpkgs-unstable": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1716948383,
|
"lastModified": 1703438236,
|
||||||
"narHash": "sha256-SzDKxseEcHR5KzPXLwsemyTR/kaM9whxeiJohbL04rs=",
|
"narHash": "sha256-aqVBq1u09yFhL7bj1/xyUeJjzr92fXVvQSSEx6AdB1M=",
|
||||||
"owner": "NixOS",
|
"owner": "NixOS",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "ad57eef4ef0659193044870c731987a6df5cf56b",
|
"rev": "5f64a12a728902226210bf01d25ec6cbb9d9265b",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -710,16 +613,15 @@
|
|||||||
},
|
},
|
||||||
"nixpkgs_2": {
|
"nixpkgs_2": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1718632497,
|
"lastModified": 1681756206,
|
||||||
"narHash": "sha256-YtlyfqOdYMuu7gumZtK0Kg7jr4OKfHUhJkZfNUryw68=",
|
"narHash": "sha256-7B2Jc1zosXvZJKlxTPBlGew0LeX/7cxguG/d3syc1JI=",
|
||||||
"owner": "NixOS",
|
"owner": "NixOS",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "c58b4a9118498c1055c5908a5bbe666e56abe949",
|
"rev": "6eceb07c28016ec50dd683fda94995702b67e855",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
"owner": "NixOS",
|
"owner": "NixOS",
|
||||||
"ref": "nixos-unstable-small",
|
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
@@ -740,52 +642,17 @@
|
|||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"nixpkgs_4": {
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1709309926,
|
|
||||||
"narHash": "sha256-VZFBtXGVD9LWTecGi6eXrE0hJ/mVB3zGUlHImUs2Qak=",
|
|
||||||
"owner": "NixOS",
|
|
||||||
"repo": "nixpkgs",
|
|
||||||
"rev": "79baff8812a0d68e24a836df0a364c678089e2c7",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "NixOS",
|
|
||||||
"ref": "nixos-23.11",
|
|
||||||
"repo": "nixpkgs",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"nixpkgs_5": {
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1674990008,
|
|
||||||
"narHash": "sha256-4zOyp+hFW2Y7imxIpZqZGT8CEqKmDjwgfD6BzRUE0mQ=",
|
|
||||||
"owner": "NixOS",
|
|
||||||
"repo": "nixpkgs",
|
|
||||||
"rev": "d2bbcbe6c626d339b25a4995711f07625b508214",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "NixOS",
|
|
||||||
"ref": "nixpkgs-unstable",
|
|
||||||
"repo": "nixpkgs",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"poetry2nix": {
|
"poetry2nix": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"flake-utils": "flake-utils_4",
|
"flake-utils": "flake-utils_4",
|
||||||
"nix-github-actions": "nix-github-actions",
|
"nixpkgs": "nixpkgs_2"
|
||||||
"nixpkgs": "nixpkgs_2",
|
|
||||||
"systems": "systems_4",
|
|
||||||
"treefmt-nix": "treefmt-nix"
|
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1718726452,
|
"lastModified": 1681532901,
|
||||||
"narHash": "sha256-w4hJSYvACz0i5XHtxc6XNyHwbxpisN13M2kA2Y7937o=",
|
"narHash": "sha256-9ZN/gaCOlkx53km4J2QkLQh4bS+6UCBsjdi87kw6+jc=",
|
||||||
"owner": "nix-community",
|
"owner": "nix-community",
|
||||||
"repo": "poetry2nix",
|
"repo": "poetry2nix",
|
||||||
"rev": "53e534a08c0cd2a9fa7587ed1c3e7f6aeb804a2c",
|
"rev": "2e66fd2623eccb3086e52929c2cefd882faac8a8",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -798,18 +665,18 @@
|
|||||||
"inputs": {
|
"inputs": {
|
||||||
"agenix": "agenix",
|
"agenix": "agenix",
|
||||||
"crane": "crane_2",
|
"crane": "crane_2",
|
||||||
"flake-utils": "flake-utils_10",
|
"flake-utils": "flake-utils_9",
|
||||||
"nixpkgs": [
|
"nixpkgs": [
|
||||||
"nixpkgs-unstable"
|
"nixpkgs-unstable"
|
||||||
],
|
],
|
||||||
"rust-overlay": "rust-overlay"
|
"rust-overlay": "rust-overlay"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1709831932,
|
"lastModified": 1682237245,
|
||||||
"narHash": "sha256-WsP8rOFa/SqYNbVtYJ/l2mWWOgyDTJFbITMV8tv0biI=",
|
"narHash": "sha256-xbBR7LNK+d5Yi/D6FXQGc1R6u2VV2nwr/Df5iaEbOEQ=",
|
||||||
"owner": "yaxitech",
|
"owner": "yaxitech",
|
||||||
"repo": "ragenix",
|
"repo": "ragenix",
|
||||||
"rev": "06de099ef02840ec463419f12de73729d458e1eb",
|
"rev": "281f68c3d477904f79ff1cd5807a8c226cd80a50",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -825,7 +692,7 @@
|
|||||||
"borgthin": "borgthin",
|
"borgthin": "borgthin",
|
||||||
"deploy-rs": "deploy-rs",
|
"deploy-rs": "deploy-rs",
|
||||||
"devshell": "devshell_3",
|
"devshell": "devshell_3",
|
||||||
"flake-utils": "flake-utils_8",
|
"flake-utils": "flake-utils_7",
|
||||||
"home-manager-stable": "home-manager-stable",
|
"home-manager-stable": "home-manager-stable",
|
||||||
"home-manager-unstable": "home-manager-unstable",
|
"home-manager-unstable": "home-manager-unstable",
|
||||||
"impermanence": "impermanence",
|
"impermanence": "impermanence",
|
||||||
@@ -850,11 +717,11 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1708740535,
|
"lastModified": 1682129965,
|
||||||
"narHash": "sha256-NCTw235XwSDbeTAtAwg/hOeNOgwYhVq7JjDdbkOgBeA=",
|
"narHash": "sha256-1KRPIorEL6pLpJR04FwAqqnt4Tzcm4MqD84yhlD+XSk=",
|
||||||
"owner": "oxalica",
|
"owner": "oxalica",
|
||||||
"repo": "rust-overlay",
|
"repo": "rust-overlay",
|
||||||
"rev": "9b24383d77f598716fa0cbb8b48c97249f5ee1af",
|
"rev": "2c417c0460b788328220120c698630947547ee83",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -863,44 +730,23 @@
|
|||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"sbt": {
|
|
||||||
"inputs": {
|
|
||||||
"flake-utils": "flake-utils_13",
|
|
||||||
"nixpkgs": "nixpkgs_5"
|
|
||||||
},
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1698464090,
|
|
||||||
"narHash": "sha256-Pnej7WZIPomYWg8f/CZ65sfW85IfIUjYhphMMg7/LT0=",
|
|
||||||
"owner": "zaninime",
|
|
||||||
"repo": "sbt-derivation",
|
|
||||||
"rev": "6762cf2c31de50efd9ff905cbcc87239995a4ef9",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "zaninime",
|
|
||||||
"repo": "sbt-derivation",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"sharry": {
|
"sharry": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"devshell-tools": "devshell-tools",
|
"flake-utils": "flake-utils_10",
|
||||||
"flake-utils": "flake-utils_12",
|
|
||||||
"nixpkgs": [
|
"nixpkgs": [
|
||||||
"nixpkgs-unstable"
|
"nixpkgs-unstable"
|
||||||
],
|
]
|
||||||
"sbt": "sbt"
|
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1710796573,
|
"lastModified": 1687587666,
|
||||||
"narHash": "sha256-23fLZFNacZU/skc8i7JExHfD//Mpkslhga6f5ATTqBA=",
|
"narHash": "sha256-t1VNvdQdDUFTEKTFP2fc7Fb3buQBmP+h9WUeO8b2Bus=",
|
||||||
"owner": "devplayer0",
|
"owner": "eikek",
|
||||||
"repo": "sharry",
|
"repo": "sharry",
|
||||||
"rev": "4e7a87880ba0807afd5d21706ce383b8b8727990",
|
"rev": "a9b3371aa6c7b92088b20fd6e479c251a5556b86",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
"owner": "devplayer0",
|
"owner": "eikek",
|
||||||
"repo": "sharry",
|
"repo": "sharry",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
@@ -920,36 +766,6 @@
|
|||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"systems_10": {
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1681028828,
|
|
||||||
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
|
|
||||||
"owner": "nix-systems",
|
|
||||||
"repo": "default",
|
|
||||||
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "nix-systems",
|
|
||||||
"repo": "default",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"systems_11": {
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1681028828,
|
|
||||||
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
|
|
||||||
"owner": "nix-systems",
|
|
||||||
"repo": "default",
|
|
||||||
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "nix-systems",
|
|
||||||
"repo": "default",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"systems_2": {
|
"systems_2": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1681028828,
|
"lastModified": 1681028828,
|
||||||
@@ -990,8 +806,9 @@
|
|||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
"id": "systems",
|
"owner": "nix-systems",
|
||||||
"type": "indirect"
|
"repo": "default",
|
||||||
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"systems_5": {
|
"systems_5": {
|
||||||
@@ -1024,76 +841,9 @@
|
|||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"systems_7": {
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1681028828,
|
|
||||||
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
|
|
||||||
"owner": "nix-systems",
|
|
||||||
"repo": "default",
|
|
||||||
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "nix-systems",
|
|
||||||
"repo": "default",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"systems_8": {
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1681028828,
|
|
||||||
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
|
|
||||||
"owner": "nix-systems",
|
|
||||||
"repo": "default",
|
|
||||||
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "nix-systems",
|
|
||||||
"repo": "default",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"systems_9": {
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1681028828,
|
|
||||||
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
|
|
||||||
"owner": "nix-systems",
|
|
||||||
"repo": "default",
|
|
||||||
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "nix-systems",
|
|
||||||
"repo": "default",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"treefmt-nix": {
|
|
||||||
"inputs": {
|
|
||||||
"nixpkgs": [
|
|
||||||
"boardie",
|
|
||||||
"poetry2nix",
|
|
||||||
"nixpkgs"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1718522839,
|
|
||||||
"narHash": "sha256-ULzoKzEaBOiLRtjeY3YoGFJMwWSKRYOic6VNw2UyTls=",
|
|
||||||
"owner": "numtide",
|
|
||||||
"repo": "treefmt-nix",
|
|
||||||
"rev": "68eb1dc333ce82d0ab0c0357363ea17c31ea1f81",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "numtide",
|
|
||||||
"repo": "treefmt-nix",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"utils": {
|
"utils": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"systems": "systems_5"
|
"systems": "systems_3"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1701680307,
|
"lastModified": 1701680307,
|
||||||
|
@@ -24,14 +24,13 @@
|
|||||||
|
|
||||||
# Stuff used by systems
|
# Stuff used by systems
|
||||||
impermanence.url = "github:nix-community/impermanence";
|
impermanence.url = "github:nix-community/impermanence";
|
||||||
boardie.url = "git+https://git.nul.ie/dev/boardie";
|
boardie.url = "github:devplayer0/boardie";
|
||||||
boardie.inputs.nixpkgs.follows = "nixpkgs-unstable";
|
boardie.inputs.nixpkgs.follows = "nixpkgs-unstable";
|
||||||
nixGL.url = "github:nix-community/nixGL";
|
nixGL.url = "github:nix-community/nixGL";
|
||||||
nixGL.inputs.nixpkgs.follows = "nixpkgs-unstable";
|
nixGL.inputs.nixpkgs.follows = "nixpkgs-unstable";
|
||||||
|
|
||||||
# Packages not in nixpkgs
|
# Packages not in nixpkgs
|
||||||
# sharry.url = "github:eikek/sharry";
|
sharry.url = "github:eikek/sharry";
|
||||||
sharry.url = "github:devplayer0/sharry";
|
|
||||||
sharry.inputs.nixpkgs.follows = "nixpkgs-unstable";
|
sharry.inputs.nixpkgs.follows = "nixpkgs-unstable";
|
||||||
borgthin.url = "github:devplayer0/borg";
|
borgthin.url = "github:devplayer0/borg";
|
||||||
borgthin.inputs.nixpkgs.follows = "nixpkgs-mine";
|
borgthin.inputs.nixpkgs.follows = "nixpkgs-mine";
|
||||||
|
@@ -1,28 +0,0 @@
|
|||||||
# XTerm's default colors
|
|
||||||
|
|
||||||
# Default colors
|
|
||||||
[colors.primary]
|
|
||||||
background = '#000000'
|
|
||||||
foreground = '#ffffff'
|
|
||||||
|
|
||||||
# Normal colors
|
|
||||||
[colors.normal]
|
|
||||||
black = '#000000'
|
|
||||||
red = '#cd0000'
|
|
||||||
green = '#00cd00'
|
|
||||||
yellow = '#cdcd00'
|
|
||||||
blue = '#0000ee'
|
|
||||||
magenta = '#cd00cd'
|
|
||||||
cyan = '#00cdcd'
|
|
||||||
white = '#e5e5e5'
|
|
||||||
|
|
||||||
# Bright colors
|
|
||||||
[colors.bright]
|
|
||||||
black = '#7f7f7f'
|
|
||||||
red = '#ff0000'
|
|
||||||
green = '#00ff00'
|
|
||||||
yellow = '#ffff00'
|
|
||||||
blue = '#5c5cff'
|
|
||||||
magenta = '#ff00ff'
|
|
||||||
cyan = '#00ffff'
|
|
||||||
white = '#ffffff'
|
|
@@ -10,23 +10,6 @@ let
|
|||||||
name = "Monocraft";
|
name = "Monocraft";
|
||||||
size = 10;
|
size = 10;
|
||||||
};
|
};
|
||||||
|
|
||||||
doomWad = pkgs.fetchurl {
|
|
||||||
url = "https://distro.ibiblio.org/slitaz/sources/packages/d/doom1.wad";
|
|
||||||
hash = "sha256-HX1DvlAeZ9kn5BXguPPinDvzMHXoWXIYFvZSpSbKx3E=";
|
|
||||||
};
|
|
||||||
|
|
||||||
doomsaver = pkgs.runCommand "doomsaver" {
|
|
||||||
inherit (pkgs) windowtolayer;
|
|
||||||
chocoDoom = pkgs.chocolate-doom2xx;
|
|
||||||
python = pkgs.python3.withPackages (ps: [ ps.filelock ]);
|
|
||||||
inherit doomWad;
|
|
||||||
enojy = ./enojy.jpg;
|
|
||||||
} ''
|
|
||||||
mkdir -p "$out"/bin
|
|
||||||
substituteAll ${./screensaver.py} "$out"/bin/doomsaver
|
|
||||||
chmod +x "$out"/bin/doomsaver
|
|
||||||
'';
|
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
options.my.gui = {
|
options.my.gui = {
|
||||||
@@ -49,19 +32,11 @@ in
|
|||||||
slurp
|
slurp
|
||||||
swappy
|
swappy
|
||||||
|
|
||||||
python3Packages.python-lsp-server
|
python310Packages.python-lsp-server
|
||||||
nil # nix language server
|
nil # nix language server
|
||||||
zls # zig language server
|
zls # zig language server
|
||||||
rust-analyzer
|
rust-analyzer
|
||||||
|
|
||||||
cowsay
|
|
||||||
fortune
|
|
||||||
jp2a
|
|
||||||
terminaltexteffects
|
|
||||||
screenfetch
|
|
||||||
neofetch
|
neofetch
|
||||||
cmatrix
|
|
||||||
doomsaver
|
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -76,15 +51,7 @@ in
|
|||||||
alacritty = {
|
alacritty = {
|
||||||
enable = true;
|
enable = true;
|
||||||
settings = {
|
settings = {
|
||||||
import = [ ./alacritty-xterm.toml ];
|
font.normal.family = font.name;
|
||||||
|
|
||||||
font = {
|
|
||||||
size = font.size;
|
|
||||||
normal = {
|
|
||||||
family = font.name;
|
|
||||||
style = "Regular";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -98,25 +65,6 @@ in
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
termite = {
|
|
||||||
enable = true;
|
|
||||||
font = "${font.name} ${toString font.size}";
|
|
||||||
backgroundColor = "rgba(0, 0, 0, 0.8)";
|
|
||||||
};
|
|
||||||
|
|
||||||
foot = {
|
|
||||||
enable = true;
|
|
||||||
settings = {
|
|
||||||
main = {
|
|
||||||
font = "${font.name}:size=${toString font.size}";
|
|
||||||
};
|
|
||||||
colors = {
|
|
||||||
alpha = 0.8;
|
|
||||||
background = "000000";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
helix = {
|
helix = {
|
||||||
enable = true;
|
enable = true;
|
||||||
settings = {
|
settings = {
|
||||||
@@ -214,7 +162,7 @@ in
|
|||||||
in
|
in
|
||||||
lib.mkOptionDefault {
|
lib.mkOptionDefault {
|
||||||
"${mod}+d" = null;
|
"${mod}+d" = null;
|
||||||
"${mod}+l" = "exec ${doomsaver}/bin/doomsaver";
|
"${mod}+l" = "exec swaylock -i ${./lock.png} -s stretch";
|
||||||
"${mod}+x" = "exec ${cfg.menu}";
|
"${mod}+x" = "exec ${cfg.menu}";
|
||||||
"${mod}+Shift+x" = "exec rofi -show drun";
|
"${mod}+Shift+x" = "exec rofi -show drun";
|
||||||
"${mod}+q" = "kill";
|
"${mod}+q" = "kill";
|
||||||
@@ -262,10 +210,17 @@ in
|
|||||||
};
|
};
|
||||||
qt = {
|
qt = {
|
||||||
enable = true;
|
enable = true;
|
||||||
platformTheme.name = "gtk";
|
platformTheme = "gtk";
|
||||||
};
|
};
|
||||||
|
|
||||||
services = {
|
services = {
|
||||||
|
swaync = {
|
||||||
|
enable = true;
|
||||||
|
settings = {
|
||||||
|
widgets = [ "title" "dnd" "mpris" "notifications" ];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
playerctld.enable = true;
|
playerctld.enable = true;
|
||||||
spotifyd = {
|
spotifyd = {
|
||||||
enable = false;
|
enable = false;
|
||||||
@@ -342,15 +297,6 @@ in
|
|||||||
] (_: "chromium-browser.desktop");
|
] (_: "chromium-browser.desktop");
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
my = {
|
|
||||||
swaync = {
|
|
||||||
enable = true;
|
|
||||||
settings = {
|
|
||||||
widgets = [ "title" "dnd" "mpris" "notifications" ];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
})
|
})
|
||||||
|
|
||||||
(mkIf (cfg.standalone && !pkgs.stdenv.isDarwin) {
|
(mkIf (cfg.standalone && !pkgs.stdenv.isDarwin) {
|
||||||
|
Binary file not shown.
Before Width: | Height: | Size: 7.4 KiB |
@@ -1,209 +0,0 @@
|
|||||||
#!@python@/bin/python
|
|
||||||
import argparse
|
|
||||||
import json
|
|
||||||
import os
|
|
||||||
import random
|
|
||||||
import signal
|
|
||||||
import subprocess
|
|
||||||
import sys
|
|
||||||
|
|
||||||
import filelock
|
|
||||||
|
|
||||||
class Screensaver:
|
|
||||||
def __init__(self, cmd, env=None, weight=1):
|
|
||||||
self.cmd = cmd
|
|
||||||
self.weight = weight
|
|
||||||
|
|
||||||
if env is not None:
|
|
||||||
self.env = os.environ.copy()
|
|
||||||
for k, v in env.items():
|
|
||||||
self.env[k] = v
|
|
||||||
else:
|
|
||||||
self.env = None
|
|
||||||
self.proc = None
|
|
||||||
|
|
||||||
def start(self):
|
|
||||||
assert self.proc is None
|
|
||||||
self.proc = subprocess.Popen(self.cmd, env=self.env)
|
|
||||||
|
|
||||||
def wait(self):
|
|
||||||
assert self.proc is not None
|
|
||||||
self.proc.wait()
|
|
||||||
|
|
||||||
def stop(self, kill=False):
|
|
||||||
assert self.proc is not None
|
|
||||||
if kill:
|
|
||||||
self.proc.kill()
|
|
||||||
else:
|
|
||||||
self.proc.terminate()
|
|
||||||
|
|
||||||
class DoomSaver(Screensaver):
|
|
||||||
wad = '@doomWad@'
|
|
||||||
|
|
||||||
def __init__(self, demo_index, weight=1.5):
|
|
||||||
super().__init__(
|
|
||||||
['@chocoDoom@/bin/chocolate-doom',
|
|
||||||
'-iwad', self.wad,
|
|
||||||
'-demoloopi', str(demo_index)],
|
|
||||||
env={
|
|
||||||
'SDL_AUDIODRIVER': 'null',
|
|
||||||
'SDL_VIDEODRIVER': 'caca',
|
|
||||||
'CACA_DRIVER': 'ncurses',
|
|
||||||
},
|
|
||||||
weight=weight,
|
|
||||||
)
|
|
||||||
|
|
||||||
def stop(self):
|
|
||||||
super().stop(kill=True)
|
|
||||||
|
|
||||||
class TTESaver(Screensaver):
|
|
||||||
effects = (
|
|
||||||
'beams,binarypath,blackhole,bouncyballs,bubbles,burn,colorshift,crumble,'
|
|
||||||
'decrypt,errorcorrect,expand,fireworks,middleout,orbittingvolley,overflow,'
|
|
||||||
'pour,print,rain,randomsequence,rings,scattered,slice,slide,spotlights,'
|
|
||||||
'spray,swarm,synthgrid,unstable,vhstape,waves,wipe'
|
|
||||||
).split(',')
|
|
||||||
|
|
||||||
def __init__(self, cmd, env=None, weight=1):
|
|
||||||
super().__init__(cmd, env=env, weight=weight)
|
|
||||||
self.running = False
|
|
||||||
|
|
||||||
def start(self):
|
|
||||||
self.running = True
|
|
||||||
|
|
||||||
def wait(self):
|
|
||||||
while self.running:
|
|
||||||
effect_cmd = ['tte', random.choice(self.effects)]
|
|
||||||
print(f"$ {self.cmd} | {' '.join(effect_cmd)}")
|
|
||||||
content = subprocess.check_output(self.cmd, shell=True, env=self.env, stderr=subprocess.DEVNULL)
|
|
||||||
|
|
||||||
self.proc = subprocess.Popen(effect_cmd, stdin=subprocess.PIPE)
|
|
||||||
self.proc.stdin.write(content)
|
|
||||||
self.proc.stdin.close()
|
|
||||||
self.proc.wait()
|
|
||||||
|
|
||||||
def stop(self):
|
|
||||||
self.running = False
|
|
||||||
self.proc.terminate()
|
|
||||||
|
|
||||||
class MultiSaver:
|
|
||||||
savers = [
|
|
||||||
DoomSaver(0),
|
|
||||||
DoomSaver(1),
|
|
||||||
DoomSaver(2),
|
|
||||||
|
|
||||||
Screensaver(['cmatrix']),
|
|
||||||
|
|
||||||
TTESaver('screenfetch -N'),
|
|
||||||
TTESaver('fortune | cowsay'),
|
|
||||||
TTESaver('top -bn1 | head -n50'),
|
|
||||||
TTESaver('ss -nltu'),
|
|
||||||
TTESaver('ss -ntu'),
|
|
||||||
TTESaver('jp2a --width=100 @enojy@'),
|
|
||||||
]
|
|
||||||
state_filename = 'screensaver.json'
|
|
||||||
|
|
||||||
def __init__(self, select=None):
|
|
||||||
self.state_path = os.path.join(f'/run/user/{os.geteuid()}', self.state_filename)
|
|
||||||
self.lock = filelock.FileLock(f'{self.state_path}.lock')
|
|
||||||
|
|
||||||
if select is not None:
|
|
||||||
assert select >= 0 and select < len(self.savers), 'Invalid screensaver index'
|
|
||||||
self.selected = self.savers[select]
|
|
||||||
else:
|
|
||||||
self.selected = None
|
|
||||||
self.cleaned_up = False
|
|
||||||
|
|
||||||
def select(self):
|
|
||||||
with self.lock:
|
|
||||||
if not os.path.exists(self.state_path):
|
|
||||||
state = {'instances': []}
|
|
||||||
else:
|
|
||||||
with open(self.state_path) as f:
|
|
||||||
state = json.load(f)
|
|
||||||
|
|
||||||
if self.selected is None:
|
|
||||||
available = set(range(len(self.savers)))
|
|
||||||
new_instances = []
|
|
||||||
for instance in state['instances']:
|
|
||||||
if not os.path.exists(f"/proc/{instance['pid']}"):
|
|
||||||
continue
|
|
||||||
|
|
||||||
new_instances.append(instance)
|
|
||||||
i = instance['saver']
|
|
||||||
assert i in available
|
|
||||||
available.remove(i)
|
|
||||||
assert available, 'No screensavers left'
|
|
||||||
available = list(available)
|
|
||||||
|
|
||||||
weights = []
|
|
||||||
for i in available:
|
|
||||||
weights.append(self.savers[i].weight)
|
|
||||||
selected_i = random.choices(available, weights=weights)[0]
|
|
||||||
|
|
||||||
new_instances.append({'pid': os.getpid(), 'saver': selected_i})
|
|
||||||
state['instances'] = new_instances
|
|
||||||
|
|
||||||
# print(f'Selected saver {selected_i}')
|
|
||||||
self.selected = self.savers[selected_i]
|
|
||||||
|
|
||||||
with open(self.state_path, 'w') as f:
|
|
||||||
json.dump(state, f)
|
|
||||||
|
|
||||||
def cleanup(self):
|
|
||||||
if self.cleaned_up:
|
|
||||||
return
|
|
||||||
self.cleaned_up = True
|
|
||||||
|
|
||||||
with self.lock:
|
|
||||||
with open(self.state_path) as f:
|
|
||||||
state = json.load(f)
|
|
||||||
|
|
||||||
for i, instance in enumerate(state['instances']):
|
|
||||||
if instance['pid'] == os.getpid():
|
|
||||||
del state['instances'][i]
|
|
||||||
|
|
||||||
with open(self.state_path, 'w') as f:
|
|
||||||
json.dump(state, f)
|
|
||||||
|
|
||||||
def run(self):
|
|
||||||
assert self.selected is not None
|
|
||||||
self.selected.start()
|
|
||||||
|
|
||||||
signal.signal(signal.SIGINT, self._sighandler)
|
|
||||||
signal.signal(signal.SIGTERM, self._sighandler)
|
|
||||||
signal.signal(signal.SIGHUP, self._sighandler)
|
|
||||||
self.selected.wait()
|
|
||||||
self.cleanup()
|
|
||||||
|
|
||||||
def stop(self):
|
|
||||||
assert self.selected is not None
|
|
||||||
print('Shutting down')
|
|
||||||
self.selected.stop()
|
|
||||||
self.cleanup()
|
|
||||||
def _sighandler(self, signum, frame):
|
|
||||||
self.stop()
|
|
||||||
|
|
||||||
def main():
|
|
||||||
parser = argparse.ArgumentParser(description='Wayland terminal-based lock screen')
|
|
||||||
parser.add_argument('-l', '--locker-cmd', default='swaylock-plugin', help='swaylock-plugin command to use')
|
|
||||||
parser.add_argument('-t', '--terminal', default='alacritty', help='Terminal emulator to use')
|
|
||||||
parser.add_argument('-i', '--instance', action='store_true', help='Run as instance')
|
|
||||||
parser.add_argument('-s', '--screensaver', type=int, help='Force use of specific screensaver')
|
|
||||||
|
|
||||||
args = parser.parse_args()
|
|
||||||
if not args.instance:
|
|
||||||
cmd = [
|
|
||||||
args.locker_cmd, '--command-each',
|
|
||||||
f'@windowtolayer@/bin/windowtolayer -- {args.terminal} -e {sys.argv[0]} --instance']
|
|
||||||
if args.screensaver is not None:
|
|
||||||
cmd[-1] += f' --screensaver {args.screensaver}'
|
|
||||||
subprocess.check_call(cmd)
|
|
||||||
return
|
|
||||||
|
|
||||||
ms = MultiSaver(select=args.screensaver)
|
|
||||||
ms.select()
|
|
||||||
ms.run()
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
|
||||||
main()
|
|
@@ -146,9 +146,9 @@ in
|
|||||||
dnd-none = "";
|
dnd-none = "";
|
||||||
};
|
};
|
||||||
return-type = "json";
|
return-type = "json";
|
||||||
exec = "${config.my.swaync.package}/bin/swaync-client -swb";
|
exec = "${config.services.swaync.package}/bin/swaync-client -swb";
|
||||||
on-click = "${config.my.swaync.package}/bin/swaync-client -t -sw";
|
on-click = "${config.services.swaync.package}/bin/swaync-client -t -sw";
|
||||||
on-click-right = "${config.my.swaync.package}/bin/swaync-client -d -sw";
|
on-click-right = "${config.services.swaync.package}/bin/swaync-client -d -sw";
|
||||||
escape = true;
|
escape = true;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
@@ -19,10 +19,10 @@ let
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
cfg = config.my.swaync;
|
cfg = config.services.swaync;
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
options.my.swaync = with lib.types; {
|
options.services.swaync = with lib.types; {
|
||||||
enable = mkEnableOption "Sway Notification Center";
|
enable = mkEnableOption "Sway Notification Center";
|
||||||
package = mkOption {
|
package = mkOption {
|
||||||
type = package;
|
type = package;
|
||||||
|
@@ -11,8 +11,6 @@ rec {
|
|||||||
jellyseerr = 402;
|
jellyseerr = 402;
|
||||||
atticd = 403;
|
atticd = 403;
|
||||||
kea = 404;
|
kea = 404;
|
||||||
keepalived_script = 405;
|
|
||||||
photoprism = 406;
|
|
||||||
};
|
};
|
||||||
gids = {
|
gids = {
|
||||||
matrix-syncv3 = 400;
|
matrix-syncv3 = 400;
|
||||||
@@ -20,14 +18,12 @@ rec {
|
|||||||
jellyseerr = 402;
|
jellyseerr = 402;
|
||||||
atticd = 403;
|
atticd = 403;
|
||||||
kea = 404;
|
kea = 404;
|
||||||
keepalived_script = 405;
|
|
||||||
photoprism = 406;
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
kernel = {
|
kernel = {
|
||||||
lts = pkgs: pkgs.linuxKernel.packages.linux_6_6;
|
lts = pkgs: pkgs.linuxKernel.packages.linux_6_1;
|
||||||
latest = pkgs: pkgs.linuxKernel.packages.linux_6_9;
|
latest = pkgs: pkgs.linuxKernel.packages.linux_6_6;
|
||||||
};
|
};
|
||||||
|
|
||||||
nginx = rec {
|
nginx = rec {
|
||||||
@@ -111,7 +107,7 @@ rec {
|
|||||||
};
|
};
|
||||||
|
|
||||||
pubDomain = "nul.ie";
|
pubDomain = "nul.ie";
|
||||||
colony = rec {
|
colony = {
|
||||||
domain = "ams1.int.${pubDomain}";
|
domain = "ams1.int.${pubDomain}";
|
||||||
pubV4 = "94.142.240.44";
|
pubV4 = "94.142.240.44";
|
||||||
prefixes = with lib.my.net.cidr; rec {
|
prefixes = with lib.my.net.cidr; rec {
|
||||||
@@ -148,10 +144,6 @@ rec {
|
|||||||
v4 = "94.142.242.255/32";
|
v4 = "94.142.242.255/32";
|
||||||
v6 = subnet 8 1 cust.v6;
|
v6 = subnet 8 1 cust.v6;
|
||||||
};
|
};
|
||||||
jam = {
|
|
||||||
v4 = subnet 8 4 cust.v4;
|
|
||||||
v6 = subnet 8 2 cust.v6;
|
|
||||||
};
|
|
||||||
|
|
||||||
vip1 = "94.142.241.224/30";
|
vip1 = "94.142.241.224/30";
|
||||||
vip2 = "94.142.242.254/31";
|
vip2 = "94.142.242.254/31";
|
||||||
@@ -164,12 +156,6 @@ rec {
|
|||||||
home.v6 = "2a0e:97c0:4d0::/48";
|
home.v6 = "2a0e:97c0:4d0::/48";
|
||||||
};
|
};
|
||||||
|
|
||||||
custRouting = with lib.my.net.cidr; {
|
|
||||||
mail-vm = host 1 prefixes.cust.v4;
|
|
||||||
darts-vm = host 2 prefixes.cust.v4;
|
|
||||||
jam-ctr = host 3 prefixes.cust.v4;
|
|
||||||
};
|
|
||||||
|
|
||||||
firewallForwards = aa: [
|
firewallForwards = aa: [
|
||||||
{
|
{
|
||||||
port = "http";
|
port = "http";
|
||||||
@@ -183,7 +169,6 @@ rec {
|
|||||||
port = 8448;
|
port = 8448;
|
||||||
dst = aa.middleman.internal.ipv4.address;
|
dst = aa.middleman.internal.ipv4.address;
|
||||||
}
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
port = 25565;
|
port = 25565;
|
||||||
dst = aa.simpcraft-oci.internal.ipv4.address;
|
dst = aa.simpcraft-oci.internal.ipv4.address;
|
||||||
@@ -192,7 +177,6 @@ rec {
|
|||||||
port = 25566;
|
port = 25566;
|
||||||
dst = aa.simpcraft-staging-oci.internal.ipv4.address;
|
dst = aa.simpcraft-staging-oci.internal.ipv4.address;
|
||||||
}
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
port = 25575;
|
port = 25575;
|
||||||
dst = aa.simpcraft-oci.internal.ipv4.address;
|
dst = aa.simpcraft-oci.internal.ipv4.address;
|
||||||
@@ -243,7 +227,7 @@ rec {
|
|||||||
"stream"
|
"stream"
|
||||||
];
|
];
|
||||||
routersPubV4 = [
|
routersPubV4 = [
|
||||||
"109.255.252.125"
|
"109.255.1.246"
|
||||||
"109.255.252.63"
|
"109.255.252.63"
|
||||||
];
|
];
|
||||||
|
|
||||||
|
@@ -248,8 +248,8 @@ rec {
|
|||||||
in
|
in
|
||||||
{
|
{
|
||||||
trivial = prev.trivial // {
|
trivial = prev.trivial // {
|
||||||
release = "24.06:u-${prev.trivial.release}";
|
release = "23.12:u-${prev.trivial.release}";
|
||||||
codeName = "Carbrain";
|
codeName = "Amogus";
|
||||||
revisionWithDefault = default: self.rev or default;
|
revisionWithDefault = default: self.rev or default;
|
||||||
versionSuffix = ".${date}.${revCode self}:u-${revCode pkgsFlake}";
|
versionSuffix = ".${date}.${revCode self}:u-${revCode pkgsFlake}";
|
||||||
};
|
};
|
||||||
|
@@ -101,12 +101,6 @@ in
|
|||||||
dnssec = "false";
|
dnssec = "false";
|
||||||
};
|
};
|
||||||
|
|
||||||
pipewire.extraConfig.pipewire = {
|
|
||||||
"10-buffer"."context.properties" = {
|
|
||||||
"default.clock.quantum" = 128;
|
|
||||||
"default.clock.max-quantum" = 128;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
blueman.enable = true;
|
blueman.enable = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -137,6 +131,14 @@ in
|
|||||||
qperf
|
qperf
|
||||||
ethtool
|
ethtool
|
||||||
];
|
];
|
||||||
|
environment.etc = {
|
||||||
|
"pipewire/pipewire.conf.d/sample-size.conf".text = ''
|
||||||
|
context.properties = {
|
||||||
|
default.clock.quantum = 128
|
||||||
|
default.clock.max-quantum = 128
|
||||||
|
}
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
nix = {
|
nix = {
|
||||||
gc.automatic = false;
|
gc.automatic = false;
|
||||||
@@ -203,7 +205,10 @@ in
|
|||||||
packages = with pkgs; [
|
packages = with pkgs; [
|
||||||
jacktrip
|
jacktrip
|
||||||
qpwgraph
|
qpwgraph
|
||||||
boardie
|
# TODO: seems to be borked (infinite recursion???)
|
||||||
|
# (writeShellScriptBin "boardie" ''
|
||||||
|
# exec pw-jack ${boardie}/bin/boardie "$@"
|
||||||
|
# '')
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@@ -1,7 +1,7 @@
|
|||||||
{ lib, ... }:
|
{ lib, ... }:
|
||||||
let
|
let
|
||||||
inherit (lib.my) net;
|
inherit (lib.my) net;
|
||||||
inherit (lib.my.c.colony) domain prefixes custRouting firewallForwards;
|
inherit (lib.my.c.colony) domain prefixes firewallForwards;
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
imports = [ ./vms ];
|
imports = [ ./vms ];
|
||||||
@@ -60,8 +60,8 @@ in
|
|||||||
kernelPackages = (lib.my.c.kernel.lts pkgs).extend (self: super: {
|
kernelPackages = (lib.my.c.kernel.lts pkgs).extend (self: super: {
|
||||||
kernel = super.kernel.override {
|
kernel = super.kernel.override {
|
||||||
structuredExtraConfig = with lib.kernel; {
|
structuredExtraConfig = with lib.kernel; {
|
||||||
ACPI_APEI_PCIEAER = yes;
|
#SOME_OPT = yes;
|
||||||
PCIEAER = yes;
|
#A_MOD = module;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
});
|
});
|
||||||
@@ -150,12 +150,12 @@ in
|
|||||||
"serial-getty@ttyS1".enable = true;
|
"serial-getty@ttyS1".enable = true;
|
||||||
lvm-activate-main = {
|
lvm-activate-main = {
|
||||||
description = "Activate remaining LVs";
|
description = "Activate remaining LVs";
|
||||||
unitConfig.DefaultDependencies = false;
|
before = [ "local-fs-pre.target" ];
|
||||||
serviceConfig = {
|
serviceConfig = {
|
||||||
Type = "oneshot";
|
Type = "oneshot";
|
||||||
ExecStart = "${pkgs.lvm2.bin}/bin/vgchange -aay main";
|
ExecStart = "${pkgs.lvm2.bin}/bin/vgchange -aay main";
|
||||||
};
|
};
|
||||||
wantedBy = [ "local-fs-pre.target" ];
|
wantedBy = [ "sysinit.target" ];
|
||||||
};
|
};
|
||||||
|
|
||||||
rsync-lvm-meta = {
|
rsync-lvm-meta = {
|
||||||
@@ -276,10 +276,6 @@ in
|
|||||||
Destination = lib.my.c.tailscale.prefix.v6;
|
Destination = lib.my.c.tailscale.prefix.v6;
|
||||||
Gateway = allAssignments.shill.internal.ipv6.address;
|
Gateway = allAssignments.shill.internal.ipv6.address;
|
||||||
}
|
}
|
||||||
{
|
|
||||||
Destination = prefixes.jam.v6;
|
|
||||||
Gateway = allAssignments.shill.internal.ipv6.address;
|
|
||||||
}
|
|
||||||
|
|
||||||
{
|
{
|
||||||
Destination = prefixes.oci.v4;
|
Destination = prefixes.oci.v4;
|
||||||
@@ -311,7 +307,7 @@ in
|
|||||||
"90-vm-mail" = {
|
"90-vm-mail" = {
|
||||||
matchConfig.Name = "vm-mail";
|
matchConfig.Name = "vm-mail";
|
||||||
address = [
|
address = [
|
||||||
"${custRouting.mail-vm}/32"
|
(net.cidr.subnet 8 1 prefixes.cust.v4)
|
||||||
prefixes.mail.v6
|
prefixes.mail.v6
|
||||||
];
|
];
|
||||||
networkConfig = {
|
networkConfig = {
|
||||||
@@ -334,7 +330,7 @@ in
|
|||||||
"90-vm-darts" = {
|
"90-vm-darts" = {
|
||||||
matchConfig.Name = "vm-darts";
|
matchConfig.Name = "vm-darts";
|
||||||
address = [
|
address = [
|
||||||
"${custRouting.darts-vm}/32"
|
(net.cidr.subnet 8 2 prefixes.cust.v4)
|
||||||
prefixes.darts.v6
|
prefixes.darts.v6
|
||||||
];
|
];
|
||||||
networkConfig = {
|
networkConfig = {
|
||||||
|
@@ -131,7 +131,6 @@
|
|||||||
(vm.lvmDisk "media")
|
(vm.lvmDisk "media")
|
||||||
(vm.lvmDisk "minio")
|
(vm.lvmDisk "minio")
|
||||||
(vm.lvmDisk "nix-atticd")
|
(vm.lvmDisk "nix-atticd")
|
||||||
(vm.lvmDisk "jam")
|
|
||||||
]);
|
]);
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -210,7 +209,6 @@
|
|||||||
drives = [
|
drives = [
|
||||||
(mkMerge [ (vm.disk "darts" "root") { frontendOpts.bootindex = 0; } ])
|
(mkMerge [ (vm.disk "darts" "root") { frontendOpts.bootindex = 0; } ])
|
||||||
(vm.lvmDisk' "media" "darts-media")
|
(vm.lvmDisk' "media" "darts-media")
|
||||||
(vm.lvmDisk' "ext" "darts-ext")
|
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
@@ -9,7 +9,6 @@ in
|
|||||||
vpns = {
|
vpns = {
|
||||||
l2 = {
|
l2 = {
|
||||||
as211024 = {
|
as211024 = {
|
||||||
udpEncapsulation = true;
|
|
||||||
vni = 211024;
|
vni = 211024;
|
||||||
security.enable = true;
|
security.enable = true;
|
||||||
peers = {
|
peers = {
|
||||||
@@ -394,9 +393,6 @@ in
|
|||||||
# Safe enough to allow all SSH
|
# Safe enough to allow all SSH
|
||||||
tcp dport ssh accept
|
tcp dport ssh accept
|
||||||
|
|
||||||
# jam-ctr forwards
|
|
||||||
ip daddr ${aa.shill.internal.ipv4.address} tcp dport 60022 accept
|
|
||||||
|
|
||||||
ip6 daddr ${aa.middleman.internal.ipv6.address} tcp dport { http, https, 8448 } accept
|
ip6 daddr ${aa.middleman.internal.ipv6.address} tcp dport { http, https, 8448 } accept
|
||||||
${matchInet "tcp dport { http, https } accept" "git"}
|
${matchInet "tcp dport { http, https } accept" "git"}
|
||||||
ip6 daddr ${aa.simpcraft-oci.internal.ipv6.address} tcp dport { 25565, 25575 } accept
|
ip6 daddr ${aa.simpcraft-oci.internal.ipv6.address} tcp dport { 25565, 25575 } accept
|
||||||
|
@@ -2,7 +2,7 @@
|
|||||||
let
|
let
|
||||||
inherit (builtins) attrNames;
|
inherit (builtins) attrNames;
|
||||||
inherit (lib.my) net;
|
inherit (lib.my) net;
|
||||||
inherit (lib.my.c.colony) prefixes custRouting;
|
inherit (lib.my.c.colony) prefixes;
|
||||||
|
|
||||||
authZones = attrNames config.my.pdns.auth.bind.zones;
|
authZones = attrNames config.my.pdns.auth.bind.zones;
|
||||||
in
|
in
|
||||||
@@ -162,10 +162,6 @@ in
|
|||||||
|
|
||||||
andrey-cust IN A ${allAssignments.kelder.estuary.ipv4.address}
|
andrey-cust IN A ${allAssignments.kelder.estuary.ipv4.address}
|
||||||
|
|
||||||
jam-cust IN A ${net.cidr.host 0 prefixes.jam.v4}
|
|
||||||
jam-fwd IN A ${allAssignments.shill.internal.ipv4.address}
|
|
||||||
jam-cust IN AAAA ${net.cidr.host 1 prefixes.jam.v6}
|
|
||||||
|
|
||||||
$TTL 3
|
$TTL 3
|
||||||
_acme-challenge IN LUA TXT @@FILE@@
|
_acme-challenge IN LUA TXT @@FILE@@
|
||||||
|
|
||||||
|
@@ -102,6 +102,34 @@ in
|
|||||||
|
|
||||||
services = {
|
services = {
|
||||||
fstrim = lib.my.c.colony.fstrimConfig;
|
fstrim = lib.my.c.colony.fstrimConfig;
|
||||||
|
# Hacks for Jsch (Minecraft FastBack) to work
|
||||||
|
openssh = {
|
||||||
|
hostKeys = [
|
||||||
|
{
|
||||||
|
bits = 4096;
|
||||||
|
path = "/etc/ssh/ssh_host_rsa_key";
|
||||||
|
type = "rsa";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
path = "/etc/ssh/ssh_host_ed25519_key";
|
||||||
|
type = "ed25519";
|
||||||
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
type = "ecdsa-sha2-nistp256";
|
||||||
|
path = "/etc/ssh/ssh_host_ecdsa_key";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
settings = {
|
||||||
|
Macs = [
|
||||||
|
"hmac-sha2-512-etm@openssh.com"
|
||||||
|
"hmac-sha2-256-etm@openssh.com"
|
||||||
|
"umac-128-etm@openssh.com"
|
||||||
|
|
||||||
|
"hmac-sha2-256"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
netdata.enable = true;
|
netdata.enable = true;
|
||||||
nginx = {
|
nginx = {
|
||||||
enable = true;
|
enable = true;
|
||||||
|
@@ -1,105 +0,0 @@
|
|||||||
{ lib, pkgs, assignments, ... }:
|
|
||||||
let
|
|
||||||
inherit (lib.my) net;
|
|
||||||
inherit (lib.my.c.colony) prefixes custRouting;
|
|
||||||
in
|
|
||||||
{
|
|
||||||
fileSystems = {
|
|
||||||
"/mnt/jam" = {
|
|
||||||
device = "/dev/disk/by-label/jam";
|
|
||||||
fsType = "ext4";
|
|
||||||
};
|
|
||||||
|
|
||||||
"/var/lib/machines/jam" = {
|
|
||||||
device = "/mnt/jam";
|
|
||||||
options = [ "bind" ];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
systemd = {
|
|
||||||
nspawn = {
|
|
||||||
jam = {
|
|
||||||
enable = true;
|
|
||||||
execConfig = {
|
|
||||||
Boot = true;
|
|
||||||
PrivateUsers = "pick";
|
|
||||||
LinkJournal = false;
|
|
||||||
};
|
|
||||||
networkConfig = {
|
|
||||||
Private = true;
|
|
||||||
VirtualEthernet = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
network.networks = {
|
|
||||||
"50-ve-jam" = {
|
|
||||||
matchConfig = {
|
|
||||||
Kind = "veth";
|
|
||||||
Name = "ve-jam";
|
|
||||||
};
|
|
||||||
address = [
|
|
||||||
custRouting.jam-ctr
|
|
||||||
prefixes.jam.v6
|
|
||||||
];
|
|
||||||
networkConfig = {
|
|
||||||
IPv6AcceptRA = false;
|
|
||||||
IPv6SendRA = true;
|
|
||||||
};
|
|
||||||
ipv6Prefixes = [
|
|
||||||
{
|
|
||||||
ipv6PrefixConfig.Prefix = prefixes.jam.v6;
|
|
||||||
}
|
|
||||||
];
|
|
||||||
routes = map (r: { routeConfig = r; }) [
|
|
||||||
{
|
|
||||||
Destination = prefixes.jam.v4;
|
|
||||||
Scope = "link";
|
|
||||||
}
|
|
||||||
];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
services = {
|
|
||||||
"systemd-nspawn@jam" = {
|
|
||||||
overrideStrategy = "asDropin";
|
|
||||||
|
|
||||||
serviceConfig = {
|
|
||||||
CPUQuota = "400%";
|
|
||||||
MemoryHigh = "4G";
|
|
||||||
MemoryMax = "4.5G";
|
|
||||||
};
|
|
||||||
|
|
||||||
wantedBy = [ "machines.target" ];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
my = {
|
|
||||||
firewall =
|
|
||||||
let
|
|
||||||
jamIP = net.cidr.host 0 prefixes.jam.v4;
|
|
||||||
in
|
|
||||||
{
|
|
||||||
nat.forwardPorts."${assignments.internal.ipv4.address}" = [
|
|
||||||
{
|
|
||||||
port = 60022;
|
|
||||||
dst = jamIP;
|
|
||||||
dstPort = "ssh";
|
|
||||||
}
|
|
||||||
];
|
|
||||||
extraRules = ''
|
|
||||||
table inet filter {
|
|
||||||
chain forward {
|
|
||||||
iifname { ve-jam } oifname vms accept
|
|
||||||
iifname vms oifname { ve-jam } accept
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
table inet nat {
|
|
||||||
chain postrouting {
|
|
||||||
ip saddr ${jamIP} snat to ${assignments.internal.ipv4.address}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
@@ -24,7 +24,7 @@ in
|
|||||||
|
|
||||||
configuration = { lib, pkgs, config, assignments, allAssignments, ... }:
|
configuration = { lib, pkgs, config, assignments, allAssignments, ... }:
|
||||||
let
|
let
|
||||||
inherit (lib) genAttrs mkMerge mkIf mkForce;
|
inherit (lib) mkMerge mkIf mkForce;
|
||||||
inherit (lib.my) networkdAssignment;
|
inherit (lib.my) networkdAssignment;
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
@@ -45,28 +45,10 @@ in
|
|||||||
owner = "matrix-synapse";
|
owner = "matrix-synapse";
|
||||||
group = "matrix-synapse";
|
group = "matrix-synapse";
|
||||||
};
|
};
|
||||||
"chatterbox/doublepuppet.yaml" = {
|
|
||||||
owner = "matrix-synapse";
|
|
||||||
group = "matrix-synapse";
|
|
||||||
};
|
|
||||||
|
|
||||||
"chatterbox/syncv3.env" = {
|
"chatterbox/syncv3.env" = {
|
||||||
owner = "matrix-syncv3";
|
owner = "matrix-syncv3";
|
||||||
group = "matrix-syncv3";
|
group = "matrix-syncv3";
|
||||||
};
|
};
|
||||||
|
|
||||||
"chatterbox/mautrix-whatsapp.env" = {
|
|
||||||
owner = "mautrix-whatsapp";
|
|
||||||
group = "mautrix-whatsapp";
|
|
||||||
};
|
|
||||||
"chatterbox/mautrix-messenger.env" = {
|
|
||||||
owner = "mautrix-meta-messenger";
|
|
||||||
group = "mautrix-meta";
|
|
||||||
};
|
|
||||||
"chatterbox/mautrix-instagram.env" = {
|
|
||||||
owner = "mautrix-meta-instagram";
|
|
||||||
group = "mautrix-meta";
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -77,9 +59,6 @@ in
|
|||||||
|
|
||||||
users = with lib.my.c.ids; {
|
users = with lib.my.c.ids; {
|
||||||
users = {
|
users = {
|
||||||
matrix-synapse.extraGroups = [
|
|
||||||
"mautrix-whatsapp"
|
|
||||||
];
|
|
||||||
matrix-syncv3 = {
|
matrix-syncv3 = {
|
||||||
isSystemUser = true;
|
isSystemUser = true;
|
||||||
uid = uids.matrix-syncv3;
|
uid = uids.matrix-syncv3;
|
||||||
@@ -100,10 +79,7 @@ in
|
|||||||
User = "matrix-syncv3";
|
User = "matrix-syncv3";
|
||||||
Group = "matrix-syncv3";
|
Group = "matrix-syncv3";
|
||||||
};
|
};
|
||||||
} // (genAttrs [ "mautrix-whatsapp" "mautrix-meta-messenger" "mautrix-meta-instagram" ] (_: {
|
};
|
||||||
# ffmpeg needed to convert GIFs to video
|
|
||||||
path = with pkgs; [ ffmpeg ];
|
|
||||||
}));
|
|
||||||
};
|
};
|
||||||
|
|
||||||
services = {
|
services = {
|
||||||
@@ -192,19 +168,17 @@ in
|
|||||||
|
|
||||||
app_service_config_files = [
|
app_service_config_files = [
|
||||||
"/var/lib/heisenbridge/registration.yml"
|
"/var/lib/heisenbridge/registration.yml"
|
||||||
config.age.secrets."chatterbox/doublepuppet.yaml".path
|
|
||||||
"/var/lib/mautrix-whatsapp/whatsapp-registration.yaml"
|
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
|
|
||||||
};
|
sliding-sync = {
|
||||||
matrix-sliding-sync = {
|
enable = true;
|
||||||
enable = true;
|
createDatabase = false;
|
||||||
createDatabase = false;
|
environmentFile = config.age.secrets."chatterbox/syncv3.env".path;
|
||||||
environmentFile = config.age.secrets."chatterbox/syncv3.env".path;
|
settings = {
|
||||||
settings = {
|
SYNCV3_BINDADDR = "[::]:8009";
|
||||||
SYNCV3_BINDADDR = "[::]:8009";
|
SYNCV3_SERVER = "http://localhost:8008";
|
||||||
SYNCV3_SERVER = "http://localhost:8008";
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -221,140 +195,6 @@ in
|
|||||||
];
|
];
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
mautrix-whatsapp = {
|
|
||||||
enable = true;
|
|
||||||
environmentFile = config.age.secrets."chatterbox/mautrix-whatsapp.env".path;
|
|
||||||
settings = {
|
|
||||||
homeserver = {
|
|
||||||
address = "http://localhost:8008";
|
|
||||||
domain = "nul.ie";
|
|
||||||
};
|
|
||||||
appservice = {
|
|
||||||
database = {
|
|
||||||
type = "postgres";
|
|
||||||
uri = "$MAU_WAPP_PSQL_URI";
|
|
||||||
};
|
|
||||||
id = "whatsapp2";
|
|
||||||
bot = {
|
|
||||||
username = "whatsapp2";
|
|
||||||
displayname = "WhatsApp Bridge Bot";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
bridge = {
|
|
||||||
username_template = "wapp2_{{.}}";
|
|
||||||
displayname_template = "{{or .BusinessName .PushName .JID}} (WA)";
|
|
||||||
personal_filtering_spaces = true;
|
|
||||||
delivery_receipts = true;
|
|
||||||
allow_user_invite = true;
|
|
||||||
url_previews = true;
|
|
||||||
command_prefix = "!wa";
|
|
||||||
login_shared_secret_map."nul.ie" = "$MAU_WAPP_DOUBLE_PUPPET_TOKEN";
|
|
||||||
encryption = {
|
|
||||||
allow = true;
|
|
||||||
default = true;
|
|
||||||
require = true;
|
|
||||||
};
|
|
||||||
permissions = {
|
|
||||||
"@dev:nul.ie" = "admin";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
mautrix-meta.instances = {
|
|
||||||
messenger = {
|
|
||||||
enable = true;
|
|
||||||
registerToSynapse = true;
|
|
||||||
dataDir = "mautrix-messenger";
|
|
||||||
environmentFile = config.age.secrets."chatterbox/mautrix-messenger.env".path;
|
|
||||||
settings = {
|
|
||||||
homeserver = {
|
|
||||||
address = "http://localhost:8008";
|
|
||||||
domain = "nul.ie";
|
|
||||||
};
|
|
||||||
appservice = {
|
|
||||||
database = {
|
|
||||||
type = "postgres";
|
|
||||||
uri = "$MAU_FBM_PSQL_URI";
|
|
||||||
};
|
|
||||||
id = "fbm2";
|
|
||||||
bot = {
|
|
||||||
username = "messenger2";
|
|
||||||
displayname = "Messenger Bridge Bot";
|
|
||||||
avatar = "mxc://maunium.net/ygtkteZsXnGJLJHRchUwYWak";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
meta.mode = "messenger";
|
|
||||||
bridge = {
|
|
||||||
username_template = "fbm2_{{.}}";
|
|
||||||
displayname_template = ''{{or .DisplayName .Username "Unknown user"}} (FBM)'';
|
|
||||||
personal_filtering_spaces = true;
|
|
||||||
delivery_receipts = true;
|
|
||||||
management_room_text.welcome = "Hello, I'm a Messenger bridge bot.";
|
|
||||||
command_prefix = "!fbm";
|
|
||||||
login_shared_secret_map."nul.ie" = "$MAU_FBM_DOUBLE_PUPPET_TOKEN";
|
|
||||||
backfill = {
|
|
||||||
history_fetch_pages = 5;
|
|
||||||
};
|
|
||||||
encryption = {
|
|
||||||
allow = true;
|
|
||||||
default = true;
|
|
||||||
require = true;
|
|
||||||
};
|
|
||||||
permissions = {
|
|
||||||
"@dev:nul.ie" = "admin";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
instagram = {
|
|
||||||
enable = true;
|
|
||||||
registerToSynapse = true;
|
|
||||||
dataDir = "mautrix-instagram";
|
|
||||||
environmentFile = config.age.secrets."chatterbox/mautrix-instagram.env".path;
|
|
||||||
settings = {
|
|
||||||
homeserver = {
|
|
||||||
address = "http://localhost:8008";
|
|
||||||
domain = "nul.ie";
|
|
||||||
};
|
|
||||||
appservice = {
|
|
||||||
database = {
|
|
||||||
type = "postgres";
|
|
||||||
uri = "$MAU_IG_PSQL_URI";
|
|
||||||
};
|
|
||||||
id = "instagram";
|
|
||||||
bot = {
|
|
||||||
username = "instagram";
|
|
||||||
displayname = "Instagram Bridge Bot";
|
|
||||||
avatar = "mxc://maunium.net/JxjlbZUlCPULEeHZSwleUXQv";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
meta.mode = "instagram";
|
|
||||||
bridge = {
|
|
||||||
username_template = "ig_{{.}}";
|
|
||||||
displayname_template = ''{{or .DisplayName .Username "Unknown user"}} (IG)'';
|
|
||||||
personal_filtering_spaces = true;
|
|
||||||
delivery_receipts = true;
|
|
||||||
management_room_text.welcome = "Hello, I'm an Instagram bridge bot.";
|
|
||||||
command_prefix = "!ig";
|
|
||||||
login_shared_secret_map."nul.ie" = "$MAU_IG_DOUBLE_PUPPET_TOKEN";
|
|
||||||
backfill = {
|
|
||||||
history_fetch_pages = 5;
|
|
||||||
};
|
|
||||||
encryption = {
|
|
||||||
allow = true;
|
|
||||||
default = true;
|
|
||||||
require = true;
|
|
||||||
};
|
|
||||||
permissions = {
|
|
||||||
"@dev:nul.ie" = "admin";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
(mkIf config.my.build.isDevVM {
|
(mkIf config.my.build.isDevVM {
|
||||||
|
@@ -1,8 +1,6 @@
|
|||||||
{ lib, ... }:
|
{ lib, ... }:
|
||||||
let
|
let
|
||||||
inherit (lib) concatStringsSep;
|
|
||||||
inherit (lib.my) net;
|
inherit (lib.my) net;
|
||||||
inherit (lib.my.c) pubDomain;
|
|
||||||
inherit (lib.my.c.colony) domain prefixes;
|
inherit (lib.my.c.colony) domain prefixes;
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
@@ -37,9 +35,6 @@ in
|
|||||||
|
|
||||||
secrets = {
|
secrets = {
|
||||||
key = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIPUv1ntVrZv5ripsKpcOAnyDQX2PHjowzyhqWK10Ml53";
|
key = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIPUv1ntVrZv5ripsKpcOAnyDQX2PHjowzyhqWK10Ml53";
|
||||||
files = {
|
|
||||||
"jackflix/photoprism-pass.txt" = {};
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -55,16 +50,10 @@ in
|
|||||||
uid = uids.jellyseerr;
|
uid = uids.jellyseerr;
|
||||||
group = "jellyseerr";
|
group = "jellyseerr";
|
||||||
};
|
};
|
||||||
photoprism = {
|
|
||||||
isSystemUser = true;
|
|
||||||
uid = uids.photoprism;
|
|
||||||
group = "photoprism";
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
groups = {
|
groups = {
|
||||||
media.gid = 2000;
|
media.gid = 2000;
|
||||||
jellyseerr.gid = gids.jellyseerr;
|
jellyseerr.gid = gids.jellyseerr;
|
||||||
photoprism.gid = gids.photoprism;
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -87,10 +76,6 @@ in
|
|||||||
RootDirectoryStartOnly = lib.mkForce false;
|
RootDirectoryStartOnly = lib.mkForce false;
|
||||||
RootDirectory = lib.mkForce "";
|
RootDirectory = lib.mkForce "";
|
||||||
};
|
};
|
||||||
photoprism.serviceConfig = {
|
|
||||||
# Needs to be able to access its data
|
|
||||||
DynamicUser = mkForce false;
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -132,24 +117,6 @@ in
|
|||||||
};
|
};
|
||||||
|
|
||||||
jellyfin.enable = true;
|
jellyfin.enable = true;
|
||||||
|
|
||||||
photoprism = {
|
|
||||||
enable = true;
|
|
||||||
address = "[::]";
|
|
||||||
port = 2342;
|
|
||||||
originalsPath = "/mnt/media/photoprism/originals";
|
|
||||||
importPath = "/mnt/media/photoprism/import";
|
|
||||||
passwordFile = config.age.secrets."jackflix/photoprism-pass.txt".path;
|
|
||||||
settings = {
|
|
||||||
PHOTOPRISM_AUTH_MODE = "password";
|
|
||||||
PHOTOPRISM_ADMIN_USER = "dev";
|
|
||||||
PHOTOPRISM_APP_NAME = "/dev/player0 Photos";
|
|
||||||
PHOTOPRISM_SITE_URL = "https://photos.${pubDomain}/";
|
|
||||||
PHOTOPRISM_SITE_TITLE = "/dev/player0 Photos";
|
|
||||||
PHOTOPRISM_TRUSTED_PROXY = concatStringsSep "," (with prefixes.ctrs; [ v4 v6 ]);
|
|
||||||
PHOTOPRISM_DATABASE_DRIVER = "sqlite";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
@@ -37,7 +37,7 @@ in
|
|||||||
tcp dport ${toString transmissionPeerPort} accept
|
tcp dport ${toString transmissionPeerPort} accept
|
||||||
iifname vpn return
|
iifname vpn return
|
||||||
|
|
||||||
tcp dport { 19999, 9091, 9117, 7878, 8989, 8096, 2342 } accept
|
tcp dport { 19999, 9091, 9117, 7878, 8989, 8096 } accept
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
chain input {
|
chain input {
|
||||||
|
@@ -364,7 +364,7 @@ in
|
|||||||
useACMEHost = pubDomain;
|
useACMEHost = pubDomain;
|
||||||
};
|
};
|
||||||
"mc-rail.${pubDomain}" = {
|
"mc-rail.${pubDomain}" = {
|
||||||
locations."/".proxyPass = "http://simpcraft-oci.${domain}:3876";
|
locations."/".proxyPass = "http://simpcraft-staging-oci.${domain}:3876";
|
||||||
useACMEHost = pubDomain;
|
useACMEHost = pubDomain;
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -384,18 +384,6 @@ in
|
|||||||
};
|
};
|
||||||
useACMEHost = pubDomain;
|
useACMEHost = pubDomain;
|
||||||
};
|
};
|
||||||
"pb.${pubDomain}" = {
|
|
||||||
locations."/".proxyPass = "http://object-ctr.${domain}:8088";
|
|
||||||
useACMEHost = pubDomain;
|
|
||||||
};
|
|
||||||
"photos.${pubDomain}" = {
|
|
||||||
locations."/" = {
|
|
||||||
proxyPass = "http://jackflix-ctr.${domain}:2342";
|
|
||||||
proxyWebsockets = true;
|
|
||||||
extraConfig = proxyHeaders;
|
|
||||||
};
|
|
||||||
useACMEHost = pubDomain;
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
|
|
||||||
minio =
|
minio =
|
||||||
|
@@ -49,7 +49,6 @@ in
|
|||||||
};
|
};
|
||||||
"object/atticd.env" = {};
|
"object/atticd.env" = {};
|
||||||
"object/hedgedoc.env" = {};
|
"object/hedgedoc.env" = {};
|
||||||
"object/wastebin.env" = {};
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -59,7 +58,6 @@ in
|
|||||||
config.services.sharry.config.bind.port
|
config.services.sharry.config.bind.port
|
||||||
8069
|
8069
|
||||||
config.services.hedgedoc.settings.port
|
config.services.hedgedoc.settings.port
|
||||||
8088
|
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -222,15 +220,6 @@ in
|
|||||||
allowEmailRegister = false;
|
allowEmailRegister = false;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
wastebin = {
|
|
||||||
enable = true;
|
|
||||||
settings = {
|
|
||||||
WASTEBIN_MAX_BODY_SIZE = 67108864; # 16 MiB
|
|
||||||
WASTEBIN_PASSWORD_SALT = "TeGhaemeer0Siez3";
|
|
||||||
};
|
|
||||||
secretFile = config.age.secrets."object/wastebin.env".path;
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
(mkIf config.my.build.isDevVM {
|
(mkIf config.my.build.isDevVM {
|
||||||
|
@@ -49,11 +49,7 @@ in
|
|||||||
inherit (lib.my) networkdAssignment;
|
inherit (lib.my) networkdAssignment;
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
imports = [
|
imports = [ "${modulesPath}/profiles/qemu-guest.nix" ];
|
||||||
"${modulesPath}/profiles/qemu-guest.nix"
|
|
||||||
|
|
||||||
./containers-ext.nix
|
|
||||||
];
|
|
||||||
|
|
||||||
config = mkMerge [
|
config = mkMerge [
|
||||||
{
|
{
|
||||||
|
@@ -108,30 +108,45 @@ in
|
|||||||
oci-containers = {
|
oci-containers = {
|
||||||
backend = "podman";
|
backend = "podman";
|
||||||
};
|
};
|
||||||
containers.containersConf.settings.network = {
|
# NixOS has switched to using netavark, which is native to podman. It's currently missing an option to
|
||||||
network_backend = "netavark";
|
# disable iptables rules generation, which is very annoying.
|
||||||
firewall_driver = "none";
|
containers.containersConf.settings.network.network_backend = mkForce "cni";
|
||||||
};
|
|
||||||
};
|
};
|
||||||
|
|
||||||
environment = {
|
environment = {
|
||||||
etc = {
|
etc = {
|
||||||
"containers/networks/colony.json".text = toJSON {
|
"cni/net.d/90-colony.conflist".text = toJSON {
|
||||||
|
cniVersion = "0.4.0";
|
||||||
name = "colony";
|
name = "colony";
|
||||||
id = "0000000000000000000000000000000000000000000000000000000000000001";
|
plugins = [
|
||||||
driver = "bridge";
|
|
||||||
network_interface = "oci";
|
|
||||||
ipv6_enabled = true;
|
|
||||||
internal = false;
|
|
||||||
dns_enabled = false;
|
|
||||||
subnets = [
|
|
||||||
{
|
{
|
||||||
subnet = prefixes.oci.v4;
|
type = "bridge";
|
||||||
gateway = net.cidr.host 1 prefixes.oci.v4;
|
bridge = "oci";
|
||||||
}
|
isGateway = true;
|
||||||
{
|
ipMasq = false;
|
||||||
subnet = prefixes.oci.v6;
|
hairpinMode = true;
|
||||||
gateway = net.cidr.host 1 prefixes.oci.v6;
|
ipam = {
|
||||||
|
type = "host-local";
|
||||||
|
routes = [
|
||||||
|
{ dst = "0.0.0.0/0"; }
|
||||||
|
{ dst = "::/0"; }
|
||||||
|
];
|
||||||
|
ranges = [
|
||||||
|
[
|
||||||
|
{
|
||||||
|
subnet = prefixes.oci.v4;
|
||||||
|
gateway = net.cidr.host 1 prefixes.oci.v4;
|
||||||
|
}
|
||||||
|
]
|
||||||
|
[
|
||||||
|
{
|
||||||
|
subnet = prefixes.oci.v6;
|
||||||
|
gateway = net.cidr.host 1 prefixes.oci.v6;
|
||||||
|
}
|
||||||
|
]
|
||||||
|
];
|
||||||
|
};
|
||||||
|
capabilities.ips = true;
|
||||||
}
|
}
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
|
@@ -25,20 +25,22 @@ let
|
|||||||
email = "simpcraft@nul.ie"
|
email = "simpcraft@nul.ie"
|
||||||
name = "Simpcraft bot"
|
name = "Simpcraft bot"
|
||||||
'';
|
'';
|
||||||
|
knownHosts = pkgs.writeText "known_hosts" ''
|
||||||
|
git.nul.ie ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBD023ECzYmLeXIpcGVaciPjq6UN/Sjmsys5HP/Nei5GkrUZqPa3OJ2uSXKLUSKGYdeNhxaFTPJe8Yx3TsZxMme8=
|
||||||
|
'';
|
||||||
};
|
};
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
config = {
|
config = {
|
||||||
virtualisation.oci-containers.containers = {
|
virtualisation.oci-containers.containers = {
|
||||||
simpcraft = {
|
simpcraft = {
|
||||||
image = "git.nul.ie/dev/craftblock:2024.1.0-java17-alpine";
|
image = "ghcr.io/itzg/minecraft-server:2023.12.2-java17-alpine";
|
||||||
|
|
||||||
environment = {
|
environment = {
|
||||||
TYPE = "MODRINTH";
|
TYPE = "MODRINTH";
|
||||||
|
|
||||||
EULA = "true";
|
EULA = "true";
|
||||||
ENABLE_QUERY = "true";
|
ENABLE_QUERY = "true";
|
||||||
ENABLE_RCON = "true";
|
|
||||||
MOTD = "§4§k----- §9S§ai§bm§cp§dc§er§fa§6f§5t §4§k-----";
|
MOTD = "§4§k----- §9S§ai§bm§cp§dc§er§fa§6f§5t §4§k-----";
|
||||||
ICON = "/ext/icon.png";
|
ICON = "/ext/icon.png";
|
||||||
|
|
||||||
@@ -50,17 +52,15 @@ in
|
|||||||
SPAWN_PROTECTION = "0";
|
SPAWN_PROTECTION = "0";
|
||||||
VIEW_DISTANCE = "20";
|
VIEW_DISTANCE = "20";
|
||||||
|
|
||||||
MAX_MEMORY = "8G";
|
MAX_MEMORY = "6G";
|
||||||
MODRINTH_MODPACK = "https://cdn.modrinth.com/data/CIYf3Hk8/versions/NGutsQSd/Simpcraft-0.2.1.mrpack";
|
MODRINTH_MODPACK = "https://cdn.modrinth.com/data/CIYf3Hk8/versions/cdj2bSKg/Simpcraft-0.1.2.mrpack";
|
||||||
|
|
||||||
TZ = "Europe/Dublin";
|
TZ = "Europe/Dublin";
|
||||||
};
|
};
|
||||||
environmentFiles = [ config.age.secrets."whale2/simpcraft.env".path ];
|
|
||||||
|
|
||||||
volumes = [
|
volumes = [
|
||||||
"minecraft_data:/data"
|
"minecraft_data:/data"
|
||||||
"${./icon.png}:/ext/icon.png:ro"
|
"${./icon.png}:/ext/icon.png:ro"
|
||||||
"${fastback.gitConfig}:/data/.config/git/config:ro"
|
|
||||||
];
|
];
|
||||||
|
|
||||||
extraOptions = [
|
extraOptions = [
|
||||||
@@ -68,77 +68,53 @@ in
|
|||||||
];
|
];
|
||||||
};
|
};
|
||||||
|
|
||||||
# simpcraft-staging = {
|
simpcraft-staging = {
|
||||||
# image = "git.nul.ie/dev/craftblock:2024.1.0-java17-alpine";
|
image = "git.nul.ie/dev/craftblock:2024.1.0-java17-alpine";
|
||||||
|
|
||||||
# environment = {
|
environment = {
|
||||||
# TYPE = "MODRINTH";
|
TYPE = "MODRINTH";
|
||||||
|
|
||||||
# EULA = "true";
|
EULA = "true";
|
||||||
# ENABLE_QUERY = "true";
|
ENABLE_QUERY = "true";
|
||||||
# ENABLE_RCON = "true";
|
ENABLE_RCON = "true";
|
||||||
# MOTD = "§4§k----- §9S§ai§bm§cp§dc§er§fa§6f§5t [staging] §4§k-----";
|
MOTD = "§4§k----- §9S§ai§bm§cp§dc§er§fa§6f§5t [staging] §4§k-----";
|
||||||
# ICON = "/ext/icon.png";
|
ICON = "/ext/icon.png";
|
||||||
|
|
||||||
# EXISTING_WHITELIST_FILE = "SYNCHRONIZE";
|
EXISTING_WHITELIST_FILE = "SYNCHRONIZE";
|
||||||
# WHITELIST = whitelist;
|
WHITELIST = whitelist;
|
||||||
# EXISTING_OPS_FILE = "SYNCHRONIZE";
|
EXISTING_OPS_FILE = "SYNCHRONIZE";
|
||||||
# OPS = op;
|
OPS = op;
|
||||||
# DIFFICULTY = "normal";
|
DIFFICULTY = "normal";
|
||||||
# SPAWN_PROTECTION = "0";
|
SPAWN_PROTECTION = "0";
|
||||||
# VIEW_DISTANCE = "20";
|
VIEW_DISTANCE = "20";
|
||||||
|
|
||||||
# MAX_MEMORY = "4G";
|
MAX_MEMORY = "4G";
|
||||||
# MODRINTH_MODPACK = "https://cdn.modrinth.com/data/CIYf3Hk8/versions/Ym3sIi6H/Simpcraft-0.2.0.mrpack";
|
MODRINTH_MODPACK = "https://cdn.modrinth.com/data/CIYf3Hk8/versions/Ym3sIi6H/Simpcraft-0.2.0.mrpack";
|
||||||
|
|
||||||
# TZ = "Europe/Dublin";
|
TZ = "Europe/Dublin";
|
||||||
# };
|
|
||||||
# environmentFiles = [ config.age.secrets."whale2/simpcraft.env".path ];
|
|
||||||
|
|
||||||
# volumes = [
|
|
||||||
# "minecraft_staging_data:/data"
|
|
||||||
# "${./icon.png}:/ext/icon.png:ro"
|
|
||||||
# ];
|
|
||||||
|
|
||||||
# extraOptions = [
|
|
||||||
# ''--network=colony:${dockerNetAssignment allAssignments "simpcraft-staging-oci"}''
|
|
||||||
# ];
|
|
||||||
# };
|
|
||||||
};
|
|
||||||
|
|
||||||
services = {
|
|
||||||
borgbackup.jobs.simpcraft =
|
|
||||||
let
|
|
||||||
rconCommand = cmd: ''${pkgs.mcrcon}/bin/mcrcon -H simpcraft-oci -p "$RCON_PASSWORD" "${cmd}"'';
|
|
||||||
in
|
|
||||||
{
|
|
||||||
paths = [ "/var/lib/containers/storage/volumes/minecraft_data/_data/world" ];
|
|
||||||
repo = "/var/lib/containers/backup/simpcraft";
|
|
||||||
doInit = true;
|
|
||||||
encryption.mode = "none";
|
|
||||||
compression = "zstd,10";
|
|
||||||
# every ~15 minutes offset from 5 minute intervals (Minecraft seems to save at precise times?)
|
|
||||||
startAt = "*:03,17,33,47";
|
|
||||||
prune.keep = {
|
|
||||||
within = "12H";
|
|
||||||
hourly = 48;
|
|
||||||
};
|
};
|
||||||
|
environmentFiles = [ config.age.secrets."whale2/simpcraft.env".path ];
|
||||||
|
|
||||||
# Avoid Minecraft poking the files while we back up
|
volumes = [
|
||||||
preHook = rconCommand "save-off";
|
"minecraft_staging_data:/data"
|
||||||
postHook = rconCommand "save-on";
|
"${./icon.png}:/ext/icon.png:ro"
|
||||||
};
|
"${fastback.gitConfig}:/data/.config/git/config:ro"
|
||||||
};
|
"${fastback.knownHosts}:/data/.ssh/known_hosts:ro"
|
||||||
|
"${config.age.secrets."whale2/simpcraft-git.key".path}:/data/.ssh/id_rsa"
|
||||||
|
];
|
||||||
|
|
||||||
systemd = {
|
extraOptions = [
|
||||||
services = {
|
''--network=colony:${dockerNetAssignment allAssignments "simpcraft-staging-oci"}''
|
||||||
borgbackup-job-simpcraft.serviceConfig.EnvironmentFile = [ config.age.secrets."whale2/simpcraft.env".path ];
|
];
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
my = {
|
my = {
|
||||||
secrets.files = {
|
secrets.files = {
|
||||||
"whale2/simpcraft.env" = {};
|
"whale2/simpcraft.env" = {};
|
||||||
|
"whale2/simpcraft-git.key" = {
|
||||||
|
owner = "1000";
|
||||||
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
@@ -152,27 +152,15 @@ in
|
|||||||
|
|
||||||
networking.domain = "h.${pubDomain}";
|
networking.domain = "h.${pubDomain}";
|
||||||
|
|
||||||
systemd.services =
|
systemd.services = {
|
||||||
let
|
ipsec =
|
||||||
waitOnline = "systemd-networkd-wait-online@wan.service";
|
let
|
||||||
in
|
waitOnline = "systemd-networkd-wait-online@wan.service";
|
||||||
{
|
in
|
||||||
ipsec = {
|
{
|
||||||
after = [ waitOnline ];
|
after = [ waitOnline ];
|
||||||
requires = [ waitOnline ];
|
requires = [ waitOnline ];
|
||||||
};
|
};
|
||||||
|
|
||||||
ipv6-clear-default-route = {
|
|
||||||
description = "Clear IPv6 RA default route";
|
|
||||||
after = [ waitOnline ];
|
|
||||||
requires = [ waitOnline ];
|
|
||||||
script = ''
|
|
||||||
# Seems like we can sometimes pick up a default route somehow...
|
|
||||||
${pkgs.iproute2}/bin/ip -6 route del default via fe80::1 || true
|
|
||||||
'';
|
|
||||||
serviceConfig.Type = "oneshot";
|
|
||||||
wantedBy = [ "multi-user.target" ];
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
|
|
||||||
systemd.network = {
|
systemd.network = {
|
||||||
@@ -226,7 +214,7 @@ in
|
|||||||
extraConfig = ''
|
extraConfig = ''
|
||||||
[CAKE]
|
[CAKE]
|
||||||
Bandwidth=235M
|
Bandwidth=235M
|
||||||
RTTSec=50ms
|
RTTSec=10ms
|
||||||
PriorityQueueingPreset=besteffort
|
PriorityQueueingPreset=besteffort
|
||||||
# DOCSIS preset
|
# DOCSIS preset
|
||||||
OverheadBytes=18
|
OverheadBytes=18
|
||||||
@@ -250,7 +238,7 @@ in
|
|||||||
[CAKE]
|
[CAKE]
|
||||||
Parent=root
|
Parent=root
|
||||||
Bandwidth=24M
|
Bandwidth=24M
|
||||||
RTTSec=50ms
|
RTTSec=1ms
|
||||||
'';
|
'';
|
||||||
}
|
}
|
||||||
];
|
];
|
||||||
@@ -370,16 +358,6 @@ in
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
chain forward-early {
|
|
||||||
type filter hook forward priority -1; policy accept;
|
|
||||||
|
|
||||||
# MSS clamping to workaround IPv6 PMTUD being broken...
|
|
||||||
tcp flags syn tcp option maxseg size set rt mtu counter
|
|
||||||
|
|
||||||
# More Disney+ discrimination...
|
|
||||||
# TODO: This prefix could change (random AWS block)
|
|
||||||
ip6 daddr 2600:9000:2245::/48 drop
|
|
||||||
}
|
|
||||||
chain forward {
|
chain forward {
|
||||||
${lib.my.c.as211024.nftTrust}
|
${lib.my.c.as211024.nftTrust}
|
||||||
iifname lan-untrusted jump filter-untrusted
|
iifname lan-untrusted jump filter-untrusted
|
||||||
|
@@ -61,19 +61,6 @@ in
|
|||||||
webserver = true;
|
webserver = true;
|
||||||
webserver-address = "::";
|
webserver-address = "::";
|
||||||
webserver-allow-from = [ "127.0.0.1" "::1" ];
|
webserver-allow-from = [ "127.0.0.1" "::1" ];
|
||||||
|
|
||||||
lua-dns-script = pkgs.writeText "pdns-script.lua" ''
|
|
||||||
-- Disney+ doesn't like our IP space...
|
|
||||||
function preresolve(dq)
|
|
||||||
local name = dq.qname:toString()
|
|
||||||
if dq.qtype == pdns.AAAA and (string.find(name, "disneyplus") or string.find(name, "disney-plus") or string.find(name , "disney.api")) then
|
|
||||||
dq.rcode = 0
|
|
||||||
return true
|
|
||||||
end
|
|
||||||
|
|
||||||
return false
|
|
||||||
end
|
|
||||||
'';
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
@@ -195,10 +182,8 @@ in
|
|||||||
dave-lo IN A ${net.cidr.host 11 prefixes.lo.v4}
|
dave-lo IN A ${net.cidr.host 11 prefixes.lo.v4}
|
||||||
dave-lo IN AAAA ${net.cidr.host (65536+2) prefixes.lo.v6}
|
dave-lo IN AAAA ${net.cidr.host (65536+2) prefixes.lo.v6}
|
||||||
|
|
||||||
shytzel IN A ${net.cidr.host 12 prefixes.core.v4}
|
;ap0 IN A ${net.cidr.host 12 prefixes.hi.v4}
|
||||||
|
;ap0 IN AAAA ${net.cidr.host (65536+3) prefixes.hi.v6}
|
||||||
wave IN A ${net.cidr.host 12 prefixes.hi.v4}
|
|
||||||
wave IN AAAA ${net.cidr.host (65536+3) prefixes.hi.v6}
|
|
||||||
vibe IN A ${net.cidr.host 13 prefixes.hi.v4}
|
vibe IN A ${net.cidr.host 13 prefixes.hi.v4}
|
||||||
vibe IN AAAA ${net.cidr.host (65536+4) prefixes.hi.v6}
|
vibe IN AAAA ${net.cidr.host (65536+4) prefixes.hi.v6}
|
||||||
|
|
||||||
|
@@ -26,11 +26,7 @@ in
|
|||||||
};
|
};
|
||||||
|
|
||||||
systemd.services = {
|
systemd.services = {
|
||||||
kea-dhcp4-server.serviceConfig = {
|
kea-dhcp4-server.serviceConfig.DynamicUser = mkForce false;
|
||||||
# Sometimes interfaces might not be ready in time and Kea doesn't like that
|
|
||||||
Restart = "on-failure";
|
|
||||||
DynamicUser = mkForce false;
|
|
||||||
};
|
|
||||||
kea-dhcp-ddns-server.serviceConfig.DynamicUser = mkForce false;
|
kea-dhcp-ddns-server.serviceConfig.DynamicUser = mkForce false;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@@ -1,82 +1,52 @@
|
|||||||
index: { lib, pkgs, config, ... }:
|
index: { lib, pkgs, config, ... }:
|
||||||
let
|
let
|
||||||
inherit (builtins) attrNames concatMap length;
|
inherit (builtins) attrNames concatMap;
|
||||||
inherit (lib) optional concatMapStringsSep;
|
inherit (lib) optional;
|
||||||
inherit (lib.my) net;
|
inherit (lib.my) net;
|
||||||
inherit (lib.my.c.home) prefixes vips;
|
inherit (lib.my.c.home) prefixes vips;
|
||||||
|
|
||||||
pingScriptFor = name: ips:
|
|
||||||
let
|
|
||||||
script' = pkgs.writeShellScript
|
|
||||||
"keepalived-ping-${name}"
|
|
||||||
(concatMapStringsSep " || " (ip: "${pkgs.iputils}/bin/ping -qnc 1 -W 1 ${ip}") ips);
|
|
||||||
in
|
|
||||||
{
|
|
||||||
script = toString script';
|
|
||||||
interval = 1;
|
|
||||||
timeout = (length ips) + 1;
|
|
||||||
rise = 3;
|
|
||||||
fall = 3;
|
|
||||||
};
|
|
||||||
|
|
||||||
vlanIface = vlan: if vlan == "as211024" then vlan else "lan-${vlan}";
|
vlanIface = vlan: if vlan == "as211024" then vlan else "lan-${vlan}";
|
||||||
vrrpIPs = family: concatMap (vlan: (optional (family == "v6") {
|
vrrpIPs = family: concatMap (vlan: [
|
||||||
addr = "fe80::1/64";
|
|
||||||
dev = vlanIface vlan;
|
|
||||||
}) ++ [
|
|
||||||
{
|
{
|
||||||
addr = "${vips.${vlan}.${family}}/${toString (net.cidr.length prefixes.${vlan}.${family})}";
|
addr = "${vips.${vlan}.${family}}/${toString (net.cidr.length prefixes.${vlan}.${family})}";
|
||||||
dev = vlanIface vlan;
|
dev = vlanIface vlan;
|
||||||
}
|
}
|
||||||
]) (attrNames vips);
|
] ++ (optional (family == "v6") {
|
||||||
|
addr = "fe80::1/64";
|
||||||
|
dev = vlanIface vlan;
|
||||||
|
})) (attrNames vips);
|
||||||
mkVRRP = family: routerId: {
|
mkVRRP = family: routerId: {
|
||||||
state = if index == 0 then "MASTER" else "BACKUP";
|
state = if index == 0 then "MASTER" else "BACKUP";
|
||||||
interface = "lan-core";
|
interface = "lan-core";
|
||||||
priority = 255 - index;
|
priority = 255 - index;
|
||||||
virtualRouterId = routerId;
|
virtualRouterId = routerId;
|
||||||
virtualIps = vrrpIPs family;
|
virtualIps = vrrpIPs family;
|
||||||
trackScripts = [ "${family}Alive" ];
|
|
||||||
extraConfig = ''
|
extraConfig = ''
|
||||||
notify_master "${config.systemd.package}/bin/systemctl start radvd.service" root
|
notify_master "${config.systemd.package}/bin/systemctl start radvd.service"
|
||||||
notify_backup "${config.systemd.package}/bin/systemctl stop radvd.service" root
|
notify_backup "${config.systemd.package}/bin/systemctl stop radvd.service"
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
users = with lib.my.c.ids; {
|
|
||||||
users.keepalived_script = {
|
|
||||||
uid = uids.keepalived_script;
|
|
||||||
isSystemUser = true;
|
|
||||||
group = "keepalived_script";
|
|
||||||
};
|
|
||||||
groups.keepalived_script.gid = gids.keepalived_script;
|
|
||||||
};
|
|
||||||
|
|
||||||
services = {
|
services = {
|
||||||
keepalived = {
|
keepalived = {
|
||||||
enable = true;
|
enable = true;
|
||||||
enableScriptSecurity = true;
|
|
||||||
extraGlobalDefs = ''
|
extraGlobalDefs = ''
|
||||||
vrrp_version 3
|
vrrp_version 3
|
||||||
nftables keepalived
|
nftables keepalived
|
||||||
'';
|
'';
|
||||||
vrrpScripts = {
|
|
||||||
v4Alive = pingScriptFor "v4" [ "1.1.1.1" "8.8.8.8" "216.218.236.2" ];
|
|
||||||
v6Alive = pingScriptFor "v6" [ "2606:4700:4700::1111" "2001:4860:4860::8888" "2600::" ];
|
|
||||||
};
|
|
||||||
vrrpInstances = {
|
vrrpInstances = {
|
||||||
v4 = mkVRRP "v4" 51;
|
v4 = mkVRRP "v4" 51;
|
||||||
v6 = mkVRRP "v6" 52;
|
v6 = mkVRRP "v6" 52;
|
||||||
};
|
};
|
||||||
# Actually disable this for now, don't want to fault IPv4 just because IPv6 is broken...
|
extraConfig = ''
|
||||||
# extraConfig = ''
|
vrrp_sync_group main {
|
||||||
# vrrp_sync_group main {
|
group {
|
||||||
# group {
|
v4
|
||||||
# v4
|
v6
|
||||||
# v6
|
}
|
||||||
# }
|
}
|
||||||
# }
|
'';
|
||||||
# '';
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
@@ -123,7 +123,7 @@
|
|||||||
key = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIPYTB4zeAqotrEJ8M+AiGm/s9PFsWlAodz3hYSROGuDb";
|
key = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIPYTB4zeAqotrEJ8M+AiGm/s9PFsWlAodz3hYSROGuDb";
|
||||||
};
|
};
|
||||||
server.enable = true;
|
server.enable = true;
|
||||||
# deploy.node.hostname = "192.168.68.2";
|
deploy.node.hostname = "192.168.68.2";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
@@ -65,13 +65,7 @@ in
|
|||||||
systemd = {
|
systemd = {
|
||||||
services = {
|
services = {
|
||||||
jackett.bindsTo = [ "systemd-networkd-wait-online@vpn.service" ];
|
jackett.bindsTo = [ "systemd-networkd-wait-online@vpn.service" ];
|
||||||
|
|
||||||
transmission.bindsTo = [ "systemd-networkd-wait-online@vpn.service" ];
|
transmission.bindsTo = [ "systemd-networkd-wait-online@vpn.service" ];
|
||||||
# https://github.com/NixOS/nixpkgs/issues/258793#issuecomment-1748168206
|
|
||||||
transmission.serviceConfig = {
|
|
||||||
RootDirectoryStartOnly = lib.mkForce false;
|
|
||||||
RootDirectory = lib.mkForce "";
|
|
||||||
};
|
|
||||||
|
|
||||||
radarr.serviceConfig.UMask = "0002";
|
radarr.serviceConfig.UMask = "0002";
|
||||||
sonarr.serviceConfig.UMask = "0002";
|
sonarr.serviceConfig.UMask = "0002";
|
||||||
|
@@ -92,17 +92,17 @@ in
|
|||||||
|
|
||||||
nextcloud = {
|
nextcloud = {
|
||||||
enable = true;
|
enable = true;
|
||||||
package = pkgs.nextcloud29;
|
package = pkgs.nextcloud28;
|
||||||
datadir = "/mnt/storage/nextcloud";
|
datadir = "/mnt/storage/nextcloud";
|
||||||
hostName = "cloud.${domain}";
|
hostName = "cloud.${domain}";
|
||||||
https = true;
|
https = true;
|
||||||
config = {
|
config = {
|
||||||
|
extraTrustedDomains = [ "cloud-local.${domain}" ];
|
||||||
adminpassFile = config.age.secrets."kelder/nextcloud-root.txt".path;
|
adminpassFile = config.age.secrets."kelder/nextcloud-root.txt".path;
|
||||||
|
defaultPhoneRegion = "IE";
|
||||||
};
|
};
|
||||||
settings = {
|
extraOptions = {
|
||||||
updatechecker = false;
|
updatechecker = false;
|
||||||
trusted_domains = [ "cloud-local.${domain}" ];
|
|
||||||
default_phone_region = "IE";
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
@@ -129,9 +129,10 @@
|
|||||||
wifi = {
|
wifi = {
|
||||||
backend = "wpa_supplicant";
|
backend = "wpa_supplicant";
|
||||||
};
|
};
|
||||||
settings = {
|
extraConfig = ''
|
||||||
main.no-auto-default = "*";
|
[main]
|
||||||
};
|
no-auto-default=*
|
||||||
|
'';
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@@ -135,7 +135,6 @@ let
|
|||||||
ipv6 = mkBoolOpt' false "Whether this mesh's underlay operates over IPv6.";
|
ipv6 = mkBoolOpt' false "Whether this mesh's underlay operates over IPv6.";
|
||||||
baseMTU = mkOpt' ints.unsigned 1500 "Base MTU to calculate VXLAN MTU with.";
|
baseMTU = mkOpt' ints.unsigned 1500 "Base MTU to calculate VXLAN MTU with.";
|
||||||
l3Overhead = mkOpt' ints.unsigned 40 "Overhead of L3 header (to calculate MTU).";
|
l3Overhead = mkOpt' ints.unsigned 40 "Overhead of L3 header (to calculate MTU).";
|
||||||
udpEncapsulation = mkBoolOpt' false "Whether to encapsulate ESP frames in UDP.";
|
|
||||||
firewall = mkBoolOpt' true "Whether to generate firewall rules.";
|
firewall = mkBoolOpt' true "Whether to generate firewall rules.";
|
||||||
vni = mkOpt' ints.unsigned 1 "VXLAN VNI.";
|
vni = mkOpt' ints.unsigned 1 "VXLAN VNI.";
|
||||||
peers = mkOpt' (attrsOf (submodule l2PeerOpts)) { } "Peers.";
|
peers = mkOpt' (attrsOf (submodule l2PeerOpts)) { } "Peers.";
|
||||||
|
@@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
nixos.systems.installer = { config, ... }: {
|
nixos.systems.installer = { config, ... }: {
|
||||||
system = "x86_64-linux";
|
system = "x86_64-linux";
|
||||||
nixpkgs = "mine";
|
nixpkgs = "unstable";
|
||||||
docCustom = false;
|
docCustom = false;
|
||||||
rendered = config.configuration.config.my.asISO;
|
rendered = config.configuration.config.my.asISO;
|
||||||
|
|
||||||
|
@@ -1,4 +1,4 @@
|
|||||||
{ lib, pkgsFlake, pkgs, pkgs', inputs, config, ... }:
|
{ lib, pkgs, pkgs', inputs, config, ... }:
|
||||||
let
|
let
|
||||||
inherit (lib) mkIf mkDefault mkMerge;
|
inherit (lib) mkIf mkDefault mkMerge;
|
||||||
inherit (lib.my) mkDefault';
|
inherit (lib.my) mkDefault';
|
||||||
@@ -53,7 +53,7 @@ in
|
|||||||
pkgs = {
|
pkgs = {
|
||||||
to = {
|
to = {
|
||||||
type = "path";
|
type = "path";
|
||||||
path = "${pkgsFlake}";
|
path = "${pkgs.path}";
|
||||||
};
|
};
|
||||||
exact = true;
|
exact = true;
|
||||||
};
|
};
|
||||||
|
@@ -123,7 +123,18 @@ in
|
|||||||
(n: _: "ve-${n}")
|
(n: _: "ve-${n}")
|
||||||
(filterAttrs (_: c: c.networking.bridge == null) cfg.instances);
|
(filterAttrs (_: c: c.networking.bridge == null) cfg.instances);
|
||||||
|
|
||||||
systemd = mkMerge (mapAttrsToList (n: c: {
|
systemd = mkMerge ([
|
||||||
|
{
|
||||||
|
# By symlinking to the original systemd-nspawn@.service for every instance we force the unit generator to
|
||||||
|
# create overrides instead of replacing the unit entirely
|
||||||
|
packages = [
|
||||||
|
(pkgs.linkFarm "systemd-nspawn-containers" (map (n: {
|
||||||
|
name = "etc/systemd/system/systemd-nspawn@${n}.service";
|
||||||
|
path = "${pkgs.systemd}/example/systemd/system/systemd-nspawn@.service";
|
||||||
|
}) (attrNames cfg.instances)))
|
||||||
|
];
|
||||||
|
}
|
||||||
|
] ++ (mapAttrsToList (n: c: {
|
||||||
nspawn."${n}" = {
|
nspawn."${n}" = {
|
||||||
execConfig = {
|
execConfig = {
|
||||||
Boot = true;
|
Boot = true;
|
||||||
@@ -171,9 +182,6 @@ in
|
|||||||
c.containerSystem;
|
c.containerSystem;
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
# To prevent creating a whole new unit file
|
|
||||||
overrideStrategy = "asDropin";
|
|
||||||
|
|
||||||
environment = {
|
environment = {
|
||||||
# systemd.nspawn units can't set the root directory directly, but /run/machines/${n} is one of the search paths
|
# systemd.nspawn units can't set the root directory directly, but /run/machines/${n} is one of the search paths
|
||||||
root = "/run/machines/${n}";
|
root = "/run/machines/${n}";
|
||||||
@@ -239,7 +247,7 @@ in
|
|||||||
Bridge = c.networking.bridge;
|
Bridge = c.networking.bridge;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
}) cfg.instances);
|
}) cfg.instances));
|
||||||
})
|
})
|
||||||
|
|
||||||
# Inside container
|
# Inside container
|
||||||
|
@@ -23,13 +23,13 @@ in
|
|||||||
|
|
||||||
security = {
|
security = {
|
||||||
polkit.enable = true;
|
polkit.enable = true;
|
||||||
pam.services.swaylock-plugin = {};
|
pam.services.swaylock = {};
|
||||||
};
|
};
|
||||||
|
|
||||||
environment.systemPackages = with pkgs; [
|
environment.systemPackages = with pkgs; [
|
||||||
# for pw-jack
|
# for pw-jack
|
||||||
pipewire.jack
|
pipewire.jack
|
||||||
swaylock-plugin
|
swaylock
|
||||||
];
|
];
|
||||||
services = {
|
services = {
|
||||||
pipewire = {
|
pipewire = {
|
||||||
@@ -51,8 +51,6 @@ in
|
|||||||
SUBSYSTEM=="usb", ATTR{idVendor}=="0955", MODE="0664", GROUP="wheel"
|
SUBSYSTEM=="usb", ATTR{idVendor}=="0955", MODE="0664", GROUP="wheel"
|
||||||
# Nintendo
|
# Nintendo
|
||||||
SUBSYSTEM=="usb", ATTR{idVendor}=="057e", MODE="0664", GROUP="wheel"
|
SUBSYSTEM=="usb", ATTR{idVendor}=="057e", MODE="0664", GROUP="wheel"
|
||||||
# FT
|
|
||||||
SUBSYSTEM=="usb", ATTR{idVendor}=="0403", MODE="0664", GROUP="wheel"
|
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
@@ -36,8 +36,8 @@ let
|
|||||||
espOverhead =
|
espOverhead =
|
||||||
if (!mesh.security.enable) then 0
|
if (!mesh.security.enable) then 0
|
||||||
else
|
else
|
||||||
# UDP encap + SPI + seq + IV + pad / header + ICV
|
# SPI + seq + IV + pad / header + ICV
|
||||||
(if mesh.udpEncapsulation then 8 else 0) + 4 + 4 + (if mesh.security.encrypt then 8 else 0) + 2 + 16;
|
4 + 4 + (if mesh.security.encrypt then 8 else 0) + 2 + 16;
|
||||||
# UDP + VXLAN + Ethernet + L3 (IPv4/IPv6)
|
# UDP + VXLAN + Ethernet + L3 (IPv4/IPv6)
|
||||||
overhead = espOverhead + 8 + 8 + 14 + mesh.l3Overhead;
|
overhead = espOverhead + 8 + 8 + 14 + mesh.l3Overhead;
|
||||||
in
|
in
|
||||||
@@ -62,11 +62,7 @@ let
|
|||||||
chain l2mesh-${name} {
|
chain l2mesh-${name} {
|
||||||
${optionalString mesh.security.enable ''
|
${optionalString mesh.security.enable ''
|
||||||
udp dport isakmp accept
|
udp dport isakmp accept
|
||||||
${if mesh.udpEncapsulation then ''
|
meta l4proto esp accept
|
||||||
udp dport ipsec-nat-t accept
|
|
||||||
'' else ''
|
|
||||||
meta l4proto esp accept
|
|
||||||
''}
|
|
||||||
''}
|
''}
|
||||||
${optionalString (!mesh.security.enable) (vxlanAllow mesh.vni)}
|
${optionalString (!mesh.security.enable) (vxlanAllow mesh.vni)}
|
||||||
return
|
return
|
||||||
@@ -98,7 +94,6 @@ let
|
|||||||
esp=${if mesh.security.encrypt then "aes_gcm256" else "null-sha256"}
|
esp=${if mesh.security.encrypt then "aes_gcm256" else "null-sha256"}
|
||||||
ikev2=yes
|
ikev2=yes
|
||||||
modecfgpull=no
|
modecfgpull=no
|
||||||
encapsulation=${if mesh.udpEncapsulation then "yes" else "no"}
|
|
||||||
'';
|
'';
|
||||||
})
|
})
|
||||||
otherPeers);
|
otherPeers);
|
||||||
|
@@ -6,7 +6,7 @@ let
|
|||||||
cfg = config.my.nvme;
|
cfg = config.my.nvme;
|
||||||
nvme-cli = pkgs.nvme-cli.override {
|
nvme-cli = pkgs.nvme-cli.override {
|
||||||
libnvme = pkgs.libnvme.overrideAttrs (o: {
|
libnvme = pkgs.libnvme.overrideAttrs (o: {
|
||||||
patches = (if (o ? patches) then o.patches else [ ]) ++ [ ./libnvme-hostconf.patch ];
|
patches = o.patches ++ [ ./libnvme-hostconf.patch ];
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@@ -2,7 +2,7 @@
|
|||||||
let
|
let
|
||||||
inherit (lib)
|
inherit (lib)
|
||||||
optionalString concatStringsSep concatMap concatMapStringsSep mkIf mkDefault mkMerge mkForce mkVMOverride
|
optionalString concatStringsSep concatMap concatMapStringsSep mkIf mkDefault mkMerge mkForce mkVMOverride
|
||||||
mkAliasDefinitions mapAttrsToList filterAttrs;
|
mkAliasDefinitions;
|
||||||
inherit (lib.my) mkOpt' mkBoolOpt' mkVMOverride';
|
inherit (lib.my) mkOpt' mkBoolOpt' mkVMOverride';
|
||||||
|
|
||||||
cfg = config.my.tmproot;
|
cfg = config.my.tmproot;
|
||||||
@@ -492,37 +492,6 @@ in
|
|||||||
}
|
}
|
||||||
];
|
];
|
||||||
})
|
})
|
||||||
(mkIf config.services.wastebin.enable {
|
|
||||||
my.tmproot.persistence.config.directories = [ "/var/lib/private/wastebin" ];
|
|
||||||
})
|
|
||||||
(mkIf config.services.photoprism.enable {
|
|
||||||
my.tmproot.persistence.config.directories = [
|
|
||||||
{
|
|
||||||
directory = config.services.photoprism.storagePath;
|
|
||||||
mode = "0750";
|
|
||||||
user = "photoprism";
|
|
||||||
group = "photoprism";
|
|
||||||
}
|
|
||||||
];
|
|
||||||
})
|
|
||||||
(mkIf config.services.mautrix-whatsapp.enable {
|
|
||||||
my.tmproot.persistence.config.directories = [
|
|
||||||
{
|
|
||||||
directory = "/var/lib/mautrix-whatsapp";
|
|
||||||
mode = "0750";
|
|
||||||
user = "mautrix-whatsapp";
|
|
||||||
group = "mautrix-whatsapp";
|
|
||||||
}
|
|
||||||
];
|
|
||||||
})
|
|
||||||
{
|
|
||||||
my.tmproot.persistence.config.directories = mapAttrsToList (n: i: {
|
|
||||||
directory = "/var/lib/${i.dataDir}";
|
|
||||||
mode = "0750";
|
|
||||||
user = "mautrix-meta-${n}";
|
|
||||||
group = "mautrix-meta";
|
|
||||||
}) (filterAttrs (_: i: i.enable) config.services.mautrix-meta.instances);
|
|
||||||
}
|
|
||||||
]))
|
]))
|
||||||
]);
|
]);
|
||||||
|
|
||||||
|
@@ -1,49 +0,0 @@
|
|||||||
{ lib, stdenv, autoreconfHook, pkg-config, SDL, SDL_mixer, SDL_net
|
|
||||||
, fetchFromGitHub, fetchpatch, python3 }:
|
|
||||||
|
|
||||||
stdenv.mkDerivation rec {
|
|
||||||
pname = "chocolate-doom";
|
|
||||||
version = "2.3.0";
|
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
|
||||||
owner = "chocolate-doom";
|
|
||||||
repo = pname;
|
|
||||||
rev = "${pname}-${version}";
|
|
||||||
sha256 = "sha256-1uw/1CYKBvDNgT5XxRBY24Evt3f4Y6YQ6bScU+KNHgM=";
|
|
||||||
};
|
|
||||||
|
|
||||||
patches = [
|
|
||||||
# Pull upstream patch to fix build against gcc-10:
|
|
||||||
# https://github.com/chocolate-doom/chocolate-doom/pull/1257
|
|
||||||
(fetchpatch {
|
|
||||||
name = "fno-common.patch";
|
|
||||||
url = "https://github.com/chocolate-doom/chocolate-doom/commit/a8fd4b1f563d24d4296c3e8225c8404e2724d4c2.patch";
|
|
||||||
sha256 = "1dmbygn952sy5n8qqp0asg11pmygwgygl17lrj7i0fxa0nrhixhj";
|
|
||||||
})
|
|
||||||
./demoloopi.patch
|
|
||||||
];
|
|
||||||
|
|
||||||
outputs = [ "out" "man" ];
|
|
||||||
|
|
||||||
postPatch = ''
|
|
||||||
patchShebangs --build man/{simplecpp,docgen}
|
|
||||||
'';
|
|
||||||
|
|
||||||
nativeBuildInputs = [
|
|
||||||
autoreconfHook
|
|
||||||
pkg-config
|
|
||||||
# for documentation
|
|
||||||
python3
|
|
||||||
];
|
|
||||||
buildInputs = [ (SDL.override { cacaSupport = true; }) SDL_mixer SDL_net ];
|
|
||||||
enableParallelBuilding = true;
|
|
||||||
|
|
||||||
meta = {
|
|
||||||
homepage = "http://chocolate-doom.org/";
|
|
||||||
description = "A Doom source port that accurately reproduces the experience of Doom as it was played in the 1990s";
|
|
||||||
license = lib.licenses.gpl2Plus;
|
|
||||||
platforms = lib.platforms.unix;
|
|
||||||
hydraPlatforms = lib.platforms.linux; # darwin times out
|
|
||||||
maintainers = with lib.maintainers; [ ];
|
|
||||||
};
|
|
||||||
}
|
|
@@ -1,91 +0,0 @@
|
|||||||
diff --git a/src/doom/d_main.c b/src/doom/d_main.c
|
|
||||||
index 65a39a10..3f799b0f 100644
|
|
||||||
--- a/src/doom/d_main.c
|
|
||||||
+++ b/src/doom/d_main.c
|
|
||||||
@@ -483,6 +483,8 @@ void D_DoomLoop (void)
|
|
||||||
// DEMO LOOP
|
|
||||||
//
|
|
||||||
int demosequence;
|
|
||||||
+int demoloopi;
|
|
||||||
+char demoloopname[9];
|
|
||||||
int pagetic;
|
|
||||||
char *pagename;
|
|
||||||
|
|
||||||
@@ -524,6 +526,8 @@ void D_AdvanceDemo (void)
|
|
||||||
//
|
|
||||||
void D_DoAdvanceDemo (void)
|
|
||||||
{
|
|
||||||
+ int havedemo4;
|
|
||||||
+
|
|
||||||
players[consoleplayer].playerstate = PST_LIVE; // not reborn
|
|
||||||
advancedemo = false;
|
|
||||||
usergame = false; // no save / end game here
|
|
||||||
@@ -539,10 +543,14 @@ void D_DoAdvanceDemo (void)
|
|
||||||
// However! There is an alternate version of Final Doom that
|
|
||||||
// includes a fixed executable.
|
|
||||||
|
|
||||||
- if (gameversion == exe_ultimate || gameversion == exe_final)
|
|
||||||
+ havedemo4 = gameversion == exe_ultimate || gameversion == exe_final;
|
|
||||||
+ if (havedemo4)
|
|
||||||
demosequence = (demosequence+1)%7;
|
|
||||||
else
|
|
||||||
demosequence = (demosequence+1)%6;
|
|
||||||
+
|
|
||||||
+ if (demoloopi < 0 || demoloopi > (havedemo4 ? 3 : 2))
|
|
||||||
+ I_Error("Invalid demo loop start %d", demoloopi);
|
|
||||||
|
|
||||||
switch (demosequence)
|
|
||||||
{
|
|
||||||
@@ -558,17 +566,11 @@ void D_DoAdvanceDemo (void)
|
|
||||||
else
|
|
||||||
S_StartMusic (mus_intro);
|
|
||||||
break;
|
|
||||||
- case 1:
|
|
||||||
- G_DeferedPlayDemo(DEH_String("demo1"));
|
|
||||||
- break;
|
|
||||||
case 2:
|
|
||||||
pagetic = 200;
|
|
||||||
gamestate = GS_DEMOSCREEN;
|
|
||||||
pagename = DEH_String("CREDIT");
|
|
||||||
break;
|
|
||||||
- case 3:
|
|
||||||
- G_DeferedPlayDemo(DEH_String("demo2"));
|
|
||||||
- break;
|
|
||||||
case 4:
|
|
||||||
gamestate = GS_DEMOSCREEN;
|
|
||||||
if ( gamemode == commercial)
|
|
||||||
@@ -587,12 +589,14 @@ void D_DoAdvanceDemo (void)
|
|
||||||
pagename = DEH_String("HELP2");
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
+ case 1:
|
|
||||||
+ case 3:
|
|
||||||
case 5:
|
|
||||||
- G_DeferedPlayDemo(DEH_String("demo3"));
|
|
||||||
- break;
|
|
||||||
// THE DEFINITIVE DOOM Special Edition demo
|
|
||||||
case 6:
|
|
||||||
- G_DeferedPlayDemo(DEH_String("demo4"));
|
|
||||||
+ DEH_snprintf(demoloopname, 9, "demo%d", demoloopi + 1);
|
|
||||||
+ G_DeferedPlayDemo(demoloopname);
|
|
||||||
+ demoloopi = (demoloopi+1) % (havedemo4 ? 4 : 3);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
@@ -1891,7 +1895,15 @@ void D_DoomMain (void)
|
|
||||||
G_TimeDemo (demolumpname);
|
|
||||||
D_DoomLoop (); // never returns
|
|
||||||
}
|
|
||||||
-
|
|
||||||
+
|
|
||||||
+ p = M_CheckParmWithArgs("-demoloopi", 1);
|
|
||||||
+ if (p)
|
|
||||||
+ {
|
|
||||||
+ demoloopi = atoi(myargv[p+1]);
|
|
||||||
+ } else {
|
|
||||||
+ demoloopi = 0;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
if (startloadgame >= 0)
|
|
||||||
{
|
|
||||||
M_StringCopy(file, P_SaveGameFile(startloadgame), sizeof(file));
|
|
@@ -8,9 +8,4 @@ in
|
|||||||
vfio-pci-bind = callPackage ./vfio-pci-bind.nix { };
|
vfio-pci-bind = callPackage ./vfio-pci-bind.nix { };
|
||||||
librespeed-go = callPackage ./librespeed-go.nix { };
|
librespeed-go = callPackage ./librespeed-go.nix { };
|
||||||
modrinth-app = callPackage ./modrinth-app { };
|
modrinth-app = callPackage ./modrinth-app { };
|
||||||
glfw-minecraft = callPackage ./glfw-minecraft { };
|
|
||||||
chocolate-doom2xx = callPackage ./chocolate-doom2xx { };
|
|
||||||
windowtolayer = callPackage ./windowtolayer.nix { };
|
|
||||||
swaylock-plugin = callPackage ./swaylock-plugin.nix { };
|
|
||||||
terminaltexteffects = callPackage ./terminaltexteffects.nix { };
|
|
||||||
}
|
}
|
||||||
|
@@ -1,6 +0,0 @@
|
|||||||
{ lib, glfw-wayland-minecraft, ... }:
|
|
||||||
glfw-wayland-minecraft.overrideAttrs (o: {
|
|
||||||
patches = [
|
|
||||||
./suppress-wayland-errors.patch
|
|
||||||
];
|
|
||||||
})
|
|
@@ -1,43 +0,0 @@
|
|||||||
diff --git a/src/wl_window.c b/src/wl_window.c
|
|
||||||
index 7c509896..db9a6451 100644
|
|
||||||
--- a/src/wl_window.c
|
|
||||||
+++ b/src/wl_window.c
|
|
||||||
@@ -2115,25 +2115,21 @@ void _glfwSetWindowTitleWayland(_GLFWwindow* window, const char* title)
|
|
||||||
void _glfwSetWindowIconWayland(_GLFWwindow* window,
|
|
||||||
int count, const GLFWimage* images)
|
|
||||||
{
|
|
||||||
- _glfwInputError(GLFW_FEATURE_UNAVAILABLE,
|
|
||||||
- "Wayland: The platform does not support setting the window icon");
|
|
||||||
+ fprintf(stderr, "!!! Ignoring Error: Wayland: The platform does not support setting the window icon\n");
|
|
||||||
}
|
|
||||||
|
|
||||||
void _glfwGetWindowPosWayland(_GLFWwindow* window, int* xpos, int* ypos)
|
|
||||||
{
|
|
||||||
// A Wayland client is not aware of its position, so just warn and leave it
|
|
||||||
// as (0, 0)
|
|
||||||
-
|
|
||||||
- _glfwInputError(GLFW_FEATURE_UNAVAILABLE,
|
|
||||||
- "Wayland: The platform does not provide the window position");
|
|
||||||
+ fprintf(stderr, "!!! Ignoring Error: Wayland: The platform does not provide the window position\n");
|
|
||||||
}
|
|
||||||
|
|
||||||
void _glfwSetWindowPosWayland(_GLFWwindow* window, int xpos, int ypos)
|
|
||||||
{
|
|
||||||
// A Wayland client can not set its position, so just warn
|
|
||||||
|
|
||||||
- _glfwInputError(GLFW_FEATURE_UNAVAILABLE,
|
|
||||||
- "Wayland: The platform does not support setting the window position");
|
|
||||||
+ fprintf(stderr, "!!! Ignoring Error: Wayland: The platform does not support setting the window position\n");
|
|
||||||
}
|
|
||||||
|
|
||||||
void _glfwGetWindowSizeWayland(_GLFWwindow* window, int* width, int* height)
|
|
||||||
@@ -2359,8 +2355,7 @@ void _glfwRequestWindowAttentionWayland(_GLFWwindow* window)
|
|
||||||
|
|
||||||
void _glfwFocusWindowWayland(_GLFWwindow* window)
|
|
||||||
{
|
|
||||||
- _glfwInputError(GLFW_FEATURE_UNAVAILABLE,
|
|
||||||
- "Wayland: The platform does not support setting the input focus");
|
|
||||||
+ fprintf(stderr, "!!! Ignoring Error: Wayland: The platform does not support setting the input focus\n");
|
|
||||||
}
|
|
||||||
|
|
||||||
void _glfwSetWindowMonitorWayland(_GLFWwindow* window,
|
|
@@ -81,7 +81,7 @@ rustPlatform.buildRustPackage rec {
|
|||||||
|
|
||||||
dontFixup = true;
|
dontFixup = true;
|
||||||
outputHashMode = "recursive";
|
outputHashMode = "recursive";
|
||||||
outputHash = "sha256-Txttk8qZpDsAuiF8laKbZss/KEoT1Z+oepbj2s4XjE8=";
|
outputHash = "sha256-9HtTdIotG3sNIlWhd76v7Ia6P69ufp/FFqZfINXSkVc=";
|
||||||
};
|
};
|
||||||
|
|
||||||
preBuild = ''
|
preBuild = ''
|
||||||
|
@@ -1,41 +0,0 @@
|
|||||||
{ lib, stdenv, fetchFromGitHub, fetchpatch
|
|
||||||
, meson, ninja, pkg-config, scdoc, wayland-scanner
|
|
||||||
, wayland, wayland-protocols, libxkbcommon, cairo, gdk-pixbuf, pam
|
|
||||||
}:
|
|
||||||
|
|
||||||
stdenv.mkDerivation rec {
|
|
||||||
pname = "swaylock-plugin";
|
|
||||||
version = "1dd15b6";
|
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
|
||||||
owner = "mstoeckl";
|
|
||||||
repo = pname;
|
|
||||||
rev = "1dd15b6ecbe91be7a3dc4a0fa9514fb166fb2e07";
|
|
||||||
hash = "sha256-xWyDDT8sXAL58HtA9ifzCenKMmOZquzXZaz3ttGGJuY=";
|
|
||||||
};
|
|
||||||
|
|
||||||
strictDeps = true;
|
|
||||||
depsBuildBuild = [ pkg-config ];
|
|
||||||
nativeBuildInputs = [ meson ninja pkg-config scdoc wayland-scanner ];
|
|
||||||
buildInputs = [ wayland wayland-protocols libxkbcommon cairo gdk-pixbuf pam ];
|
|
||||||
|
|
||||||
mesonFlags = [
|
|
||||||
"-Dpam=enabled" "-Dgdk-pixbuf=enabled" "-Dman-pages=enabled"
|
|
||||||
];
|
|
||||||
env.NIX_CFLAGS_COMPILE = "-Wno-maybe-uninitialized";
|
|
||||||
|
|
||||||
meta = with lib; {
|
|
||||||
description = "Screen locker for Wayland -- fork with background plugin support";
|
|
||||||
longDescription = ''
|
|
||||||
Fork of swaylock, a screen locking utility for Wayland compositors.
|
|
||||||
With swaylock-plugin, you can for your lockscreen background display
|
|
||||||
the animated output from any wallpaper program that implements the
|
|
||||||
wlr-layer-shell-unstable-v1 protocol.
|
|
||||||
'';
|
|
||||||
inherit (src.meta) homepage;
|
|
||||||
mainProgram = "swaylock";
|
|
||||||
license = licenses.mit;
|
|
||||||
platforms = platforms.linux;
|
|
||||||
maintainers = with maintainers; [ devplayer0 ];
|
|
||||||
};
|
|
||||||
}
|
|
@@ -1,19 +0,0 @@
|
|||||||
{ lib
|
|
||||||
, python3Packages
|
|
||||||
, fetchPypi
|
|
||||||
}:
|
|
||||||
|
|
||||||
python3Packages.buildPythonApplication rec {
|
|
||||||
pname = "terminaltexteffects";
|
|
||||||
version = "0.10.1";
|
|
||||||
pyproject = true;
|
|
||||||
|
|
||||||
src = fetchPypi {
|
|
||||||
inherit pname version;
|
|
||||||
hash = "sha256-NyWPfdgLeXAxKPJOzB7j4aT+zjrURN59CGcv0Vt99y0=";
|
|
||||||
};
|
|
||||||
|
|
||||||
build-system = with python3Packages; [
|
|
||||||
poetry-core
|
|
||||||
];
|
|
||||||
}
|
|
@@ -1,18 +0,0 @@
|
|||||||
{ lib
|
|
||||||
, fetchFromGitLab
|
|
||||||
, rustPlatform
|
|
||||||
}:
|
|
||||||
rustPlatform.buildRustPackage rec {
|
|
||||||
pname = "windowtolayer";
|
|
||||||
version = "a5b89c3c";
|
|
||||||
|
|
||||||
src = fetchFromGitLab {
|
|
||||||
domain = "gitlab.freedesktop.org";
|
|
||||||
owner = "mstoeckl";
|
|
||||||
repo = pname;
|
|
||||||
rev = "a5b89c3c047297fd574932860a6c89e9ea02ba5d";
|
|
||||||
hash = "sha256-rssL2XkbTqUvJqfUFhzULeE4/VBzjeBC5iZWSJ8MJ+M=";
|
|
||||||
};
|
|
||||||
|
|
||||||
cargoHash = "sha256-XHmLsx9qdjlBz4xJFFiO24bR9CMw1o5368K+YMpMIBA=";
|
|
||||||
}
|
|
@@ -1,31 +0,0 @@
|
|||||||
-----BEGIN AGE ENCRYPTED FILE-----
|
|
||||||
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHNzaC1lZDI1NTE5IFpCM2U2USB5WDhJ
|
|
||||||
U3BNdEFYR2xVb21wQmhuM3h2TWpwSm40aW5ycjJJZ0NQNjNEdDBNCllpZlRtcjFM
|
|
||||||
UE1TbE02ZStsMk44YVZ2T1piZmh3REFlV0Q0RWVGMERaRkEKLT4gWDI1NTE5IFRz
|
|
||||||
T1grT3ZMRmVUaWhFU1BJbnpDTDYvRUUwUTZYUFQ2OXhQbS9KeTlUWHMKQU9UaThT
|
|
||||||
bHFaYXM4VWhPU0xBZFI1WDkzdzlQUGlJNStjT2UwblZ0S1V4VQotPiBbbGBjW3wt
|
|
||||||
Z3JlYXNlICUgRiVYCk4rMVEzMnVMSTg4VHpPcTIvRkZZd20yMVlJbXdTK3UyTkVn
|
|
||||||
V3B1OFZiNCs1R0F0WmFYc3BDaW5FajNCUgotLS0gajBSMklJUDgzZlNFTlFkZTFm
|
|
||||||
amNxblljWkVsc2w5NUVZM0x4VGl2NWZDNApDqGhViG2eQSuIEEwEh2rxVBAVkCBj
|
|
||||||
EXUYBqrcqlRFRT+cN8EM+aT6ppUeVuuOv3aTYx+tM2M2yzjWvrckeVj0fr5GwpIT
|
|
||||||
vZaj2yceTl/6M/Z7fK5AT7SqFp/sxSJZcDWInPcPc3MfvcSC5ca7UFcTd/iqtpgD
|
|
||||||
gSkiDlYrZKV3PtLrp/WO06q9zrBAiJbeBLvHM/Ym8ctSl4w/SjETDmhm3LzbX+Ow
|
|
||||||
uk/hSuk9m+pTeBPJ6CWrUVHVLitcyk2YwLwLRLvGQAQF6xQgEtL3M/pGsQp3Q6TA
|
|
||||||
ju17Kmh+kIdkgEDj9PzA8Q7QfxU3WdC6RoIXEuQQHVcJd8IAT8i3ZuuI312sXeX3
|
|
||||||
7+2Rav480GIF+5bHQGJkvBTvxj3OFGUuyREFO8nXaGwUrcdCfmkhuSs1TGZj6qZQ
|
|
||||||
xVUnp+k9X6gH5xYjka/c3Ov5rTKE7CGqJ1VBdZAcuIjhH4D33RmaVmTg7SquXZc8
|
|
||||||
cHqaoYcB/s273Wxv5qZUEfEz9ssJCxCqEOG7uQIeXgLsp7O5VtvEJfCo6Q7boN3h
|
|
||||||
Qom+6LJfnNMew2mwLQS4jV8abrVXTcmH9cA4OdtLtTO/m123AlamJc7Dmv+EDYLV
|
|
||||||
qu9jm2Dk6hz+jgJ5ruDFPyAaxcfQqEBFbKI0eB3D6qu3YcN49q8+JI05aTDyf4T3
|
|
||||||
8Mv9oe0Jlv7Gf3JqORw6dhDatyRzc2FrbkpF7mwxtLTDPKsgCBFNIfVitZdXFxN/
|
|
||||||
adu1nSBl6APznPJJZ4Xb6HmJHb/mDCeWmwt4fDwQlg0d6G8EFGYexSZOjA8yxXlr
|
|
||||||
vwhaPYldJsxlkL24nRu4wUFi3jkEepU/KsBbYMgAp2+DIzluzKErvZh2WUAr96AH
|
|
||||||
dMWdNlbmhNKwM/vfkzonZ1jSFIuad7c67cWo8nUFVxKU3tAjMFTgrasHzPyLK2HC
|
|
||||||
WJnEpmMvQsji/blPVR7AOEAzNXwpOj0N/erPCtWp2v5Vyfs/ej/sLGp6tfCdZeUv
|
|
||||||
13aNG8pYtQbHgT8qekVKRsjRlCyVYWd1lFEd3rqldtX6z8oT4cIj/c6QYzC1Rwxp
|
|
||||||
aNPqMA3e3da9t4kkHol05grDPy+5fQ7/5B5kfbidHIjCoA9DVUEh70QYuNi4JlgM
|
|
||||||
54Jh1v3N3+525YmavPbuwgDGsRkz6Sh5padEWFQ2Xw6B58Vgm6flA1ZSXNSp8bK1
|
|
||||||
3g3lyCJSimFT6B7Q8gyf6gNJVpZuHrAEexCed3qhK+Ijl2SIvsTFCWLSokOPeX/F
|
|
||||||
cy7xQ94GuLZqPedDvZ8wVOQ3X1/E46lWoY1w3qzD5l1OHuDUqJcW1ae8lXTmh8Z0
|
|
||||||
kxRFPfNaJA1y1NaD33t+gis7SA==
|
|
||||||
-----END AGE ENCRYPTED FILE-----
|
|
@@ -1,15 +0,0 @@
|
|||||||
-----BEGIN AGE ENCRYPTED FILE-----
|
|
||||||
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHNzaC1lZDI1NTE5IFpCM2U2USBhVkhZ
|
|
||||||
azNHVFdNUnJ6MVpJaGo0T0h0L3ZMbHB3RG9Ic2ZZajQ4amt1S3dVCmo0YnZxL0p3
|
|
||||||
Y2RHVWFUSVlySTNDNThYMks0aGdOdHdGQjdrRTZZdTFpdlUKLT4gWDI1NTE5IGxZ
|
|
||||||
elhYTEtMUHR6VlR2b0VwM01XNnFNR0tuK2hFenlhWTIwS3hSMlVIR0kKbVNLWFRZ
|
|
||||||
c0ZrK3YraTdhR1IzL3FxMEFQYndsYm5NUmpDd3M4Sm43aUJ3VQotPiBuZ0BNPnxi
|
|
||||||
Ny1ncmVhc2UgUHIgJ0hvbT0oCmMwcmVHR2dTd3VaSFpHUWh1ajA5M1FUTS9WQkNQ
|
|
||||||
UzZqK0JETmlUOU44eFQ4emw0Ci0tLSBhT01BQ3VVdHBQK29GdmN0VEtoazNCcFpY
|
|
||||||
WFhIeTh4VTlHeDBhcG1lNUhrCmxtBrEH3ornrPQi4eIIOskkKMTDs1Ow3Z70WuEd
|
|
||||||
FyXGsYXFwpibxFxAWWLwAYiq7cMTEE0GmYRlNYt7bWwJn12Kv5LVZCL8HXTNXCLl
|
|
||||||
xf0za7pHvXF8XWaZwU2eMMZRdkzE6HNnbLt+DB0TKS9vf33i7tmwduqJ8oiUtTRD
|
|
||||||
XTm5IPyULH2rikDuDm0aAvaZhSFlzPIe1MKr93ZaHGrvcnbzhADyt5DRmmDuYSk4
|
|
||||||
SSSrhHP3P0LB0OoMGVU8DM9O7QNVwScs07T7ll238Jc/JG/KHj1kT2K9LYAiNl4Q
|
|
||||||
JfhOOA==
|
|
||||||
-----END AGE ENCRYPTED FILE-----
|
|
@@ -1,14 +0,0 @@
|
|||||||
-----BEGIN AGE ENCRYPTED FILE-----
|
|
||||||
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHNzaC1lZDI1NTE5IFpCM2U2USBOb1dR
|
|
||||||
V1hVcGZMRm1yeUtKTUdBdkVjazJsS3l1aHR1Zzc4VGx1SmVyNHhZCkxZY2RLNW1m
|
|
||||||
eFVzRG00eGN3eGNoOGh0ZHhNZWZhcmxoVzV5elM4bGdxUTAKLT4gWDI1NTE5IGw3
|
|
||||||
ZThQM1JESU1lZk9Pc1ljanU4dVUwb0xuZENWSFcrZ01vejhRT3E5ZzQKTXZ4Q0Zn
|
|
||||||
OWFHb0xoZi9UL1NSUWNEQytmd0dqVXFydUduYnZGVGhKK0JVTQotPiBPc0RaXl5+
|
|
||||||
Wi1ncmVhc2UKYUtBRGZhVlY2MlAzRjJ5YQotLS0gSllJbHVXbDZtZGFac1JqN1I4
|
|
||||||
bUdyNSs4c3VLSEJUVmo5VkpZVmkzRzlHOAow5ki6UNCCQQt0YXMr6OGjsDg9yYkH
|
|
||||||
ssU+hO1wKXepVj6QSROZubLLTyV4Cm5rHWESMiSGTV3rcGNDUuphrS1va+stkJqK
|
|
||||||
O7ZHP68QmCPLdlu1ghNXw7etm0K+BqqQTpPfgrusW9emUV8gIY5/SWmK6hDQLR/T
|
|
||||||
ibC6GqP+ZCEQOL5OgB59PUCKwEjia6O6xFKPHVLNzfhg4ZmMCNNS70gqpTFRyN/E
|
|
||||||
s9HMiwYVuvKjEODV9kM2jhfTTD3Ri10SmHurBqdbpzWhOoLz3oMTQTyW206Air/G
|
|
||||||
8RoM1RYcVS3DI69rNg==
|
|
||||||
-----END AGE ENCRYPTED FILE-----
|
|
@@ -1,16 +0,0 @@
|
|||||||
-----BEGIN AGE ENCRYPTED FILE-----
|
|
||||||
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHNzaC1lZDI1NTE5IFpCM2U2USBTZGdy
|
|
||||||
cnNwTkkzOHBlcngzYTZycE11RlljK1RtSCthVkxSa1B0SllGZW1jCk1RbzVSMldJ
|
|
||||||
SFg4ZlFnT3ZJTTlsM0lWYlRTRkdMZU5YS2FpTmxCaVNSOGcKLT4gWDI1NTE5IFRU
|
|
||||||
RVF0NXV4bFB2ektiQVN0SkFvOXN3MGZFeDdHK25NQXBqelBvaVg3alkKaWhCRTkz
|
|
||||||
S2o5bjFWQ0VuZzZxTGpsOXBRajlGSmt3bURQN254SXhyRm8zNAotPiB7MFM0TDEr
|
|
||||||
Si1ncmVhc2UgJG0gNkggLAppL0RJQnJRQ09yb3IzaTNiQTBBOGlrbjEzNjhBNWdU
|
|
||||||
Z0VFZ1o1OEI5M3lOaHg3eW0xQlUvbVBGOEpwRXdDZlZXCjB1SSsvZmZtSlU2RzhY
|
|
||||||
ak5lcy9FbjVlZlVmMFUKLS0tIG5ZMXZhMDYrMU1DOThYNEZxTnI1d0I0TXlNeDU3
|
|
||||||
ZkFoWnBVOEx1WjRmTncKZcV/oJCkeY+Tp4Xwdy5s+vuMpnhy0cndBUE4KrfkX7xd
|
|
||||||
NXTWQ1mQdy9W5MII8s1aFtxYoShZPsoNTikzZIAqxhTMHloUqKaAG0XKCKj1ZzcV
|
|
||||||
WMj8+IOnPD1y7uwETg7l0lw0u/L2bb37zrlvrf6JjA5b4iO79+wg9AvJigdbkNou
|
|
||||||
gfNFyZuxaIwM7FOakVWV8hKhKPYd1X0y3cUQCSb0/oiogHT+9KREXsL5Jt8hVoQ0
|
|
||||||
r0asxVOASXxVRkEDQDe9RHnEMEo3+UOBtAB0DVSeGOa4LEt8SEoCfas5vo+LqMZs
|
|
||||||
fDA=
|
|
||||||
-----END AGE ENCRYPTED FILE-----
|
|
@@ -1,12 +0,0 @@
|
|||||||
-----BEGIN AGE ENCRYPTED FILE-----
|
|
||||||
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHNzaC1lZDI1NTE5IGhNYTRudyBGWFZS
|
|
||||||
Umg0Zm44TlY2djBaSUNuRGdRSTFob290aHJ2a0xnL2ZXSE9qUndNCnBJUVNUcEpF
|
|
||||||
M3F6UUYzanlENmM1Wm11WHllRzVyc1hEemtpT010ZjdKcFUKLT4gWDI1NTE5IHJV
|
|
||||||
KzdZUm5HUldPdlBHcFd1L2lEMy84ZVBqL1BoRUdlTjVMMjQ0U0dmMUUKeXFDejl5
|
|
||||||
TW5sVkJoQzFZb0R5MStoOFJKbUluN3gvTXBmd2E0MmR1ZHgxTQotPiB9SC1ncmVh
|
|
||||||
c2UgbyBKbWN2WE1kCjdESDIwMkN4NXpxU3A1cnJLamRoUUpSN2x6U2VPaEhNODdn
|
|
||||||
c05uSHBOQ0Q0a2FpY2RQc1hvUFVMZlJqdm53WjAKRGlvN1JjUnd2RWp2ZzN0Z3pv
|
|
||||||
RVozT1lueWZhck40T1VMMkd5TjZOclFhamU5NjgKLS0tIFcvemlDZ1B5d1h4cHJI
|
|
||||||
ejNuRFRERk5vU1BKbzZkUEtKSlk3K2NxTzFUQ1EK8tR8pcagaUMue5Rjz2BLNbU4
|
|
||||||
8SL2h7FsScBnIHka3122jwjgxviwH7T0YfgHpZCf+yLwVg==
|
|
||||||
-----END AGE ENCRYPTED FILE-----
|
|
@@ -1,12 +0,0 @@
|
|||||||
-----BEGIN AGE ENCRYPTED FILE-----
|
|
||||||
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHNzaC1lZDI1NTE5IGhrYnR2ZyBmbDlE
|
|
||||||
Ylh6RVBabVdnMnoxRnR5U0RZS09iMUk3TEl5Ry9vbGNFQ1F4V2tNCjRyWTZUOVhp
|
|
||||||
L2NBUzJ0OXlsU2F1VGMvK2Z2d2k4N2VaSExOTDVjKzdPODQKLT4gWDI1NTE5IEkr
|
|
||||||
ckZzSi9DaWRDYXgyUVNBejErdHhnME5aeWc2QjA4RFQrZjIvM2JhZ2sKZWRkUE9U
|
|
||||||
a3g5M1lMY3FCbVRzbFRBVzVKRmM3TFQ4RGYyK0M4K0lETFhuYwotPiA/TTJyQi1n
|
|
||||||
cmVhc2UgdTNFPyMgQGVffGEKQmViTERtRXpSSStDVlY0YXV6dwotLS0gYkdDVzFP
|
|
||||||
NnhmbnFaWVpKTDMza09qQzd3MnB5NkZGQi8vZ2Mxd29sM2Z4UQr6g8tdM6ChbRgt
|
|
||||||
g+2KGxwrUaicgMiVNbXJjbRRYq/3Ml/ZUSwiyu/+jUOlrpCxpasrADwifILD3M/c
|
|
||||||
sWW4dzVVR80t7k9FSDwy+EF/XvCxCRbLrqEbKNttfpig+9PRpB8R+so7YyYMhbc0
|
|
||||||
84nzB7gvJUlnKDVS
|
|
||||||
-----END AGE ENCRYPTED FILE-----
|
|
64
secrets/whale2/simpcraft-git.key.age
Normal file
64
secrets/whale2/simpcraft-git.key.age
Normal file
@@ -0,0 +1,64 @@
|
|||||||
|
-----BEGIN AGE ENCRYPTED FILE-----
|
||||||
|
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHNzaC1lZDI1NTE5IC9FSlh2ZyB2T0Ft
|
||||||
|
R1o5bEVYRzk3VnpzRDAzK3kzTlNuSTdPVkkrT0l5RjFYT1RuZm5vCjYxN1A1ZFU5
|
||||||
|
TEE5R01RcnQ2T1k4NXZuc25RTUlvc3NBNnAwemE4YXp2NUUKLT4gWDI1NTE5IGk3
|
||||||
|
M2lSMXhDWjEvVVBtZnFJdmlnT25OZ1NlOGJwVWo2Qm84L2UxRGxlbU0KaFNzR0sy
|
||||||
|
clllVC9QSHU2ZDEvQW1KTDlXYlF4aDdUNW5RampTbGtsaHZCUQotPiA4XHJETy1n
|
||||||
|
cmVhc2UgM1xTMnYmIHJqbEogKgpoVWg1V1ZubElOZVNhazNzdGRrS0tyZFZKNWlo
|
||||||
|
YW80Ci0tLSBZZXdFT25VVTRnaE5jNnpyaU5OTUdXeE1FZ3djRmpKMG9hdDdodUIw
|
||||||
|
Z25JCmaCCdtWJR+6PZbGMCKLAYmG2j/YxlrZzAjLR6g3KFQjDhJA6zTCDy8UHQyH
|
||||||
|
7A0+1Ozu5RBt0kVJiejX+osYYBhFHMEqBJnuB79lmrAg/Pyss3396b1C9hMCZqdo
|
||||||
|
mkt0knv8wWSI78eMP9DtUQXK0NW4rDf2Wyis9/U4IImlVk5QgkcR1mheF1bgyJt0
|
||||||
|
t8rr4UBpT8EU85aSGhXC45IkVtAtgA3hsNcptwwcyJT9Hz9obYUnov6tlwD6p4oJ
|
||||||
|
8tvpTC5p212LBvndr6dvsg3zwlqFfVbkDgsidnIpTTaxqbFi2nHl0F67Ofu17J/l
|
||||||
|
AWj/5SeiK7k8vDQt+TSTuAF3tuhYvSBYVT/7EHCFzLAnNj/TJFWZf//gH7S/byZW
|
||||||
|
1XbEqOaUK1mzOESLbwR61hDNfRRRrr85CTx/n8KXvJFzQ+mi1hHJmEbrGzd2tObm
|
||||||
|
EmCCzcCsupjgFH/exS/o83lleR5zN/BW96Sjh12MbE3OuMjcjZJ7noDv6q9p0gmq
|
||||||
|
hHMmocC53xxOB00dlUBLmheo6aGyfF+XE7m5FYHVjlIdu2ol43BGGF1Wv13xJ+w+
|
||||||
|
G5cI+jahrkRpmIk2sLeV+BoCMnEYjOnFc24uya9km0Vz7fo92tK037+kdaFUXjvX
|
||||||
|
JmWkbbcSb8YcgKzZLhFJiscY+P0xN2hmoai0fNC48Oneu0GqQdftfjiQYJMhp18o
|
||||||
|
T3IERTLt/JoNIhqZrssg0lKHyt6N47S2A6/X2cT6eMgRrRn43KthPjsmGhRjdFDT
|
||||||
|
qCuUJJl1L9NX4EqZjXHBZo/bjsbErx2XixN1YbXGnLwN4yUEjE2A/hMbWumzZxp+
|
||||||
|
ATJgbTYuzim6lachbXsrf4f9sRjDjufMR+evD4lMTmFx+Mg6edBJN6Z2lvLyxJh4
|
||||||
|
qtw0Uejxn5mYPX1otpTa5tTD5ZSGvMXikDO05ItVcfWKQ7Uohck9cRRbNoJn+dlL
|
||||||
|
8UuNwmXixH7CkC11w51HTM7HkDW3G3aRTftN2mdfEC2Qr1aGKM+tqLEddja+vDPJ
|
||||||
|
9Ty8m9nXC5armWO9ewNji4oBEmi0QQK5kasLdQfPBMFupL1a0H2FxtucW2BVW5/K
|
||||||
|
RQTgJ6ACitcd36+FWtof3HoKyOBqoezguh6P5ImvKgz3mGcq/2AdosgSZ82m4eZp
|
||||||
|
Ug2KAEgZkR8mdNLujJHD7TZyW2FFq9DAF0Qshg7eD2cK4QA1BdpOrMUTKS5yCHFb
|
||||||
|
wXJWefnUK5Z9fvGeIN3L4bBjzYBwBfqopBmfDguGx3P7o3Zk42mJ5Z53NTqW0HaF
|
||||||
|
CN805HzFmNFt9/WV5I4jzVlVgNeep7b3wnH3pLITfz2FpDYU0/URuUNV/th2nJ2+
|
||||||
|
qH0tTbl1sql/i+kPGHQbyuCbM4IsFo6dZMgCGaovv9jmbJuS3ZmrRQhE/8CUMK6V
|
||||||
|
YsKi7Heyeza4HDzh9tlddNG+jwkT9/pIWvXChGa3JPokDtJrOoa7P6dV78opfGcT
|
||||||
|
XJFQbOm0KIH0rISbuWV7I4XEmkEim5TtmaGmsC8NIqgsY7Wjv0pap6vevevU6ImF
|
||||||
|
w7pxeU0J+5Npm88B+Nyd95Shy/pjRou31W7qTpE95/z89tLKmN3EKL1iDOWhWdCW
|
||||||
|
VsFS0XC1x7LIpnCXKf1QbnxmQzndSH/oMXmWetCUQ9RPbp8BpiIi+aULe6wzArPb
|
||||||
|
0Kxs+EEKMhswp4wbZNCmC5X3RRmm4CrmPryb4+rMqWhhTRXri2QvfuOb3IyM46wa
|
||||||
|
vKZJsCwlb7/2KR+DTwGJDcV9ArX85Yxb6lhHyQqMyHfL8XmnctmejVA+aacWc+dl
|
||||||
|
2YAwoUo/NnZ28GVjZsImt8ltJlcc8bIW8GwXqqOKPyqdShU6ExxdFRLUhq7o82uK
|
||||||
|
1oDtxyqI77IbVgQMlrdqL9XRuM3OvGt3rjg51EpDVqY/PUDrFuBkk0eQDNVjaI9e
|
||||||
|
k5vbMCTjECdiEjQq+ZJsSeVfnEs3pJVqD+vtSIMC2oodxPc2rClrRuhHaCzvUVP0
|
||||||
|
7LR/2PZlIHzkbwy5sT9W8HOPV3PO/4jPwKRtZQvz8kFiEh2gj8ZfRDELVAV6BOKd
|
||||||
|
kLrGAEs+dmFOkwfzH7/Mb3hakHe7wqVjSBB4yZqd87zxYK91b8D4io7CemDUidiO
|
||||||
|
5+6ms829MCro5+ZmS0+ALnc2LTnFWc/bS0TkOdTtwpfCCF/9gbSea85PwDNaB8Vl
|
||||||
|
M41t15H3oXwjYIwpxvVN/1AWUn3NjbYE7a4ndLccJs//Wyj6nmmnIYc5H5r/BeTD
|
||||||
|
cHnue35twb4LmiL0MubjQNIyCHdnupCauorfZI6G3yLMXo9Y+Kf8FtkBEZdgD3TB
|
||||||
|
DC6264ZOkjEtBfYQ2gj2MXDsKGYVRuz7xn80NnvRr0O/KRpN7h8WNw2qmYKMt9Uk
|
||||||
|
qBgEIe5vyVcAl5cbEcZCQxMKGK6WY96IYmgCV30Bv61hUx9fn6Wc+86o00N/LJY/
|
||||||
|
O4e8QnRwVntY4IS6hYz3W1BjdzPAB9Bsz33UCznEyreaetRQlOTgg+sEZb1/EbsD
|
||||||
|
Ia5dDIjmxBc8Lpf3xLTHZkUYKZt4RlNdKCOhn8Ka+0bfpaW3AVWvEolgDl+e66E0
|
||||||
|
Mk2FzJy5w/+Rgav+Btf1Ol038OcvY2V/5KRcqXK244LIRpHfAd26eXx95DsN5vzc
|
||||||
|
Ulkt5aWt4awfxnz1SRUZChdoctJlOuiT/pH8S76FpeY+HXbD3vmTW25jHKXq0qqu
|
||||||
|
9HEuMRbNLcRcIrXoxpI7nfvfLOmtrEkHH+vVQdLauIGOUQKgaKc5PvvOU0ARerUn
|
||||||
|
1wbu8dSJvrzH2LYKhLZIYONmNaRLLlrGolw+vII3MvZYFTst6TyyXLcVwWcacL/9
|
||||||
|
k694FKX3TH5Rtbf3SjpJCNhiez/kWcDuWJ4k5hwfpU0MTQPYJRHrrWbHNrq7T0Iv
|
||||||
|
M40eTeN4mGn0ldcrkMObmMwMWEnPbmNPCsd4RnRG3jsf81UBFTZmMBe6oqW04OI0
|
||||||
|
u8h9Afhv9JZNx41FHY06WQUWk29Bo++0mWUiRJcDvDFFlnWlied8Fp9iU6ijJjp+
|
||||||
|
Fma/e3jc88/1rX8FKvYX5d6KEz+VmVW6PWLI2oQz5ydm7zDzJJ9zwzVrBpg3B6hX
|
||||||
|
m5Q/BfNdAKck4PB9rGfqs+/lPDNgHN7iUVPB95wYf1/jNAqY/I+OT36Hl1LFuSF8
|
||||||
|
kvOpb4w87BSTFIYBXBQff8xCwyhPHnyuQcSa7qgJDKdUqqMIG9sauzO+a316ZhqG
|
||||||
|
6LW2eEw1ZLuNl3Tk2ix3WhZWu42pf/uDGTu3DXJC05hGg1KuyvGWDGsIkI6yfNYg
|
||||||
|
MaHwIg6U+m1+Gva1rcv74vSH0OH4LIcco0F0V8wDA2IdbvPTduNIb4OheWPvReZy
|
||||||
|
zZZ12JjLSkKZI/qH1kGQTN6GN+NaUdtkr1ElX4H6IRue28Jtrm7pi39WO3J6/xZv
|
||||||
|
SC80sm3k/emvQ/1RiQbXXjxl3Ma+zcGFqkB93OaG+TbGiNRL5KkXWpP1fDF8zOKV
|
||||||
|
UkPletJkwnR6wsdEjd6q1ysRTHiDVf1uuSmdGep18QnRqQ==
|
||||||
|
-----END AGE ENCRYPTED FILE-----
|
Reference in New Issue
Block a user