feat: niri, and so much more o.o

This commit is contained in:
Kat Inskip 2025-07-13 04:04:41 -07:00
parent f61eca52be
commit 79bf49841b
Signed by: kat
GPG key ID: 465E64DECEA8CF0F
61 changed files with 1412 additions and 1683 deletions

449
flake.lock generated
View file

@ -354,6 +354,22 @@
} }
}, },
"flake-compat_5": { "flake-compat_5": {
"flake": false,
"locked": {
"lastModified": 1747046372,
"narHash": "sha256-CIVLLkVgvHYbgI2UpXvIIBJ12HWgX+fjA8Xf8PUmqCY=",
"owner": "edolstra",
"repo": "flake-compat",
"rev": "9100a0f413b0c601e0533d1d94ffd501ce2e7885",
"type": "github"
},
"original": {
"owner": "edolstra",
"repo": "flake-compat",
"type": "github"
}
},
"flake-compat_6": {
"locked": { "locked": {
"lastModified": 1733328505, "lastModified": 1733328505,
"narHash": "sha256-NeCCThCEP3eCl2l/+27kNNK7QrwZB1IJCrXfrbv5oqU=", "narHash": "sha256-NeCCThCEP3eCl2l/+27kNNK7QrwZB1IJCrXfrbv5oqU=",
@ -367,7 +383,7 @@
"url": "https://flakehub.com/f/edolstra/flake-compat/1.tar.gz" "url": "https://flakehub.com/f/edolstra/flake-compat/1.tar.gz"
} }
}, },
"flake-compat_6": { "flake-compat_7": {
"flake": false, "flake": false,
"locked": { "locked": {
"lastModified": 1733328505, "lastModified": 1733328505,
@ -383,7 +399,7 @@
"type": "github" "type": "github"
} }
}, },
"flake-compat_7": { "flake-compat_8": {
"flake": false, "flake": false,
"locked": { "locked": {
"lastModified": 1650374568, "lastModified": 1650374568,
@ -478,11 +494,11 @@
"systems": "systems_2" "systems": "systems_2"
}, },
"locked": { "locked": {
"lastModified": 1701680307, "lastModified": 1731533236,
"narHash": "sha256-kAuep2h5ajznlPMD9rnQyffWG8EM/C73lejGofXvdM8=", "narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=",
"owner": "numtide", "owner": "numtide",
"repo": "flake-utils", "repo": "flake-utils",
"rev": "4022d587cbbfd70fe950c1e2083a02621806a725", "rev": "11707dc2f618dd54ca8739b309ec4fc024de578b",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -493,7 +509,7 @@
}, },
"flake-utils-plus": { "flake-utils-plus": {
"inputs": { "inputs": {
"flake-utils": "flake-utils_6" "flake-utils": "flake-utils_8"
}, },
"locked": { "locked": {
"lastModified": 1715533576, "lastModified": 1715533576,
@ -515,11 +531,11 @@
"systems": "systems_3" "systems": "systems_3"
}, },
"locked": { "locked": {
"lastModified": 1731533236, "lastModified": 1701680307,
"narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=", "narHash": "sha256-kAuep2h5ajznlPMD9rnQyffWG8EM/C73lejGofXvdM8=",
"owner": "numtide", "owner": "numtide",
"repo": "flake-utils", "repo": "flake-utils",
"rev": "11707dc2f618dd54ca8739b309ec4fc024de578b", "rev": "4022d587cbbfd70fe950c1e2083a02621806a725",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -529,12 +545,15 @@
} }
}, },
"flake-utils_3": { "flake-utils_3": {
"inputs": {
"systems": "systems_4"
},
"locked": { "locked": {
"lastModified": 1644229661, "lastModified": 1731533236,
"narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", "narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=",
"owner": "numtide", "owner": "numtide",
"repo": "flake-utils", "repo": "flake-utils",
"rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", "rev": "11707dc2f618dd54ca8739b309ec4fc024de578b",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -559,8 +578,23 @@
} }
}, },
"flake-utils_5": { "flake-utils_5": {
"locked": {
"lastModified": 1644229661,
"narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=",
"owner": "numtide",
"repo": "flake-utils",
"rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797",
"type": "github"
},
"original": {
"owner": "numtide",
"repo": "flake-utils",
"type": "github"
}
},
"flake-utils_6": {
"inputs": { "inputs": {
"systems": "systems_4" "systems": "systems_5"
}, },
"locked": { "locked": {
"lastModified": 1731533236, "lastModified": 1731533236,
@ -576,9 +610,27 @@
"type": "github" "type": "github"
} }
}, },
"flake-utils_6": { "flake-utils_7": {
"inputs": { "inputs": {
"systems": "systems_5" "systems": "systems_6"
},
"locked": {
"lastModified": 1731533236,
"narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=",
"owner": "numtide",
"repo": "flake-utils",
"rev": "11707dc2f618dd54ca8739b309ec4fc024de578b",
"type": "github"
},
"original": {
"owner": "numtide",
"repo": "flake-utils",
"type": "github"
}
},
"flake-utils_8": {
"inputs": {
"systems": "systems_7"
}, },
"locked": { "locked": {
"lastModified": 1694529238, "lastModified": 1694529238,
@ -654,6 +706,21 @@
"type": "github" "type": "github"
} }
}, },
"flakey-profile": {
"locked": {
"lastModified": 1712898590,
"narHash": "sha256-FhGIEU93VHAChKEXx905TSiPZKga69bWl1VB37FK//I=",
"owner": "lf-",
"repo": "flakey-profile",
"rev": "243c903fd8eadc0f63d205665a92d4df91d42d9d",
"type": "github"
},
"original": {
"owner": "lf-",
"repo": "flakey-profile",
"type": "github"
}
},
"freetype2": { "freetype2": {
"flake": false, "flake": false,
"locked": { "locked": {
@ -1258,11 +1325,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1743972087, "lastModified": 1752404418,
"narHash": "sha256-eHr2RYh4xIZvCBLchrXxfMJy70EXtpgztH+/2wod2QQ=", "narHash": "sha256-uf5+w/i0w+2VbNEll9ZRxYSfAbfBC+xfmKjjgREiPro=",
"owner": "kittywitch", "owner": "kittywitch",
"repo": "konawall-py", "repo": "konawall-py",
"rev": "55c51028af579813641da3e91e02cbf11ab9d87d", "rev": "9ca077bc1ebc2d0a36176716950db719e9e075c0",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -1316,6 +1383,41 @@
"type": "github" "type": "github"
} }
}, },
"lix": {
"flake": false,
"locked": {
"lastModified": 1751235704,
"narHash": "sha256-J4ycLoXHPsoBoQtEXFCelL4xlq5pT8U9tNWNKm43+YI=",
"rev": "1d7368585eebaa2c4bdbcb88fe600cfb2239b2c6",
"type": "tarball",
"url": "https://git.lix.systems/api/v1/repos/lix-project/lix/archive/1d7368585eebaa2c4bdbcb88fe600cfb2239b2c6.tar.gz?rev=1d7368585eebaa2c4bdbcb88fe600cfb2239b2c6"
},
"original": {
"type": "tarball",
"url": "https://git.lix.systems/lix-project/lix/archive/release-2.93.tar.gz"
}
},
"lix-module": {
"inputs": {
"flake-utils": "flake-utils",
"flakey-profile": "flakey-profile",
"lix": "lix",
"nixpkgs": [
"nixpkgs"
]
},
"locked": {
"lastModified": 1751240025,
"narHash": "sha256-SXUAlxpjPRkArRMHy5+Hdi+PiC+ND9yzzIjiaHmTvQU=",
"rev": "8b1094356f4723d6e89d3f8a95b333ee16d9ab02",
"type": "tarball",
"url": "https://git.lix.systems/api/v1/repos/lix-project/nixos-module/archive/8b1094356f4723d6e89d3f8a95b333ee16d9ab02.tar.gz"
},
"original": {
"type": "tarball",
"url": "https://git.lix.systems/lix-project/nixos-module/archive/2.93.2-1.tar.gz"
}
},
"minecraft": { "minecraft": {
"inputs": { "inputs": {
"flake-compat": [ "flake-compat": [
@ -1344,17 +1446,17 @@
}, },
"moonlight": { "moonlight": {
"inputs": { "inputs": {
"flake-utils": "flake-utils", "flake-utils": "flake-utils_2",
"nixpkgs": [ "nixpkgs": [
"nixpkgs" "nixpkgs"
] ]
}, },
"locked": { "locked": {
"lastModified": 1750621684, "lastModified": 1752099881,
"narHash": "sha256-E8iHTYK9iUtIjYgBNj54Xeulj9WaxSGDbzOLLFhCSqA=", "narHash": "sha256-mn6f4ci5C2jkyxgmBHQ4dI9V0/20DlyS6EbQz4w7znc=",
"owner": "moonlight-mod", "owner": "moonlight-mod",
"repo": "moonlight", "repo": "moonlight",
"rev": "9398874e59f5e2b8485c489ce6c0f6c9c7d210a0", "rev": "dbef0c38e1c0066de5ec35a4d4219026b1bd7010",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -1365,7 +1467,7 @@
}, },
"naersk": { "naersk": {
"inputs": { "inputs": {
"nixpkgs": "nixpkgs_12" "nixpkgs": "nixpkgs_13"
}, },
"locked": { "locked": {
"lastModified": 1717067539, "lastModified": 1717067539,
@ -1400,7 +1502,7 @@
}, },
"neorg-overlay": { "neorg-overlay": {
"inputs": { "inputs": {
"flake-utils": "flake-utils_2", "flake-utils": "flake-utils_3",
"neorg": "neorg", "neorg": "neorg",
"neorg-telescope": "neorg-telescope", "neorg-telescope": "neorg-telescope",
"nixpkgs": "nixpkgs_5", "nixpkgs": "nixpkgs_5",
@ -1457,18 +1559,63 @@
"type": "github" "type": "github"
} }
}, },
"nix-filter": { "niri": {
"inputs": {
"niri-stable": "niri-stable",
"niri-unstable": "niri-unstable",
"nixpkgs": [
"nixpkgs"
],
"nixpkgs-stable": [
"nixpkgs"
],
"xwayland-satellite-stable": "xwayland-satellite-stable",
"xwayland-satellite-unstable": "xwayland-satellite-unstable"
},
"locked": { "locked": {
"lastModified": 1693833173, "lastModified": 1752291616,
"narHash": "sha256-hlMABKrGbEiJD5dwUSfnw1CQ3bG7KKwDV+Nx3bEZd7U=", "narHash": "sha256-zpPFo4cgr5tOy8DCLIoD++idsKjnzgVPnBeZLmazYc4=",
"owner": "numtide", "owner": "sodiboo",
"repo": "nix-filter", "repo": "niri-flake",
"rev": "ac030bd9ba98e318e1f4c4328d60766ade8ebe8b", "rev": "30962469e2e8fb93c3672ee605316b89b8e9a198",
"type": "github" "type": "github"
}, },
"original": { "original": {
"owner": "numtide", "owner": "sodiboo",
"repo": "nix-filter", "repo": "niri-flake",
"type": "github"
}
},
"niri-stable": {
"flake": false,
"locked": {
"lastModified": 1748151941,
"narHash": "sha256-z4viQZLgC2bIJ3VrzQnR+q2F3gAOEQpU1H5xHtX/2fs=",
"owner": "YaLTeR",
"repo": "niri",
"rev": "8ba57fcf25d2fc9565131684a839d58703f1dae7",
"type": "github"
},
"original": {
"owner": "YaLTeR",
"ref": "v25.05.1",
"repo": "niri",
"type": "github"
}
},
"niri-unstable": {
"flake": false,
"locked": {
"lastModified": 1750791124,
"narHash": "sha256-F5iVU/hjoSHSSe0gllxm0PcAaseEtGNanYK5Ha3k2Tg=",
"owner": "YaLTeR",
"repo": "niri",
"rev": "37458d94b288945f6cfbd3c5c233f634d59f246c",
"type": "github"
},
"original": {
"owner": "YaLTeR",
"repo": "niri",
"type": "github" "type": "github"
} }
}, },
@ -1534,6 +1681,27 @@
"type": "github" "type": "github"
} }
}, },
"nix-options-doc": {
"inputs": {
"flake-utils": "flake-utils_6",
"nixpkgs": "nixpkgs_9",
"rust-overlay": "rust-overlay_3"
},
"locked": {
"lastModified": 1742115705,
"narHash": "sha256-RfXwJPWBoWswIU68+y/XZfTWtFHd/fK14bKvOlRmfPo=",
"owner": "Thunderbottom",
"repo": "nix-options-doc",
"rev": "2caa4b5756a8666d65d70122f413e295f56886e7",
"type": "github"
},
"original": {
"owner": "Thunderbottom",
"ref": "v0.2.0",
"repo": "nix-options-doc",
"type": "github"
}
},
"nix-std": { "nix-std": {
"locked": { "locked": {
"lastModified": 1701658249, "lastModified": 1701658249,
@ -1564,6 +1732,28 @@
"type": "github" "type": "github"
} }
}, },
"nixos-cli": {
"inputs": {
"flake-compat": "flake-compat_5",
"nix-options-doc": "nix-options-doc",
"nixpkgs": [
"nixpkgs"
]
},
"locked": {
"lastModified": 1752359519,
"narHash": "sha256-ksd2Gu1JpKU3rKvbkpiUlrkY72M8VAln1w4W7pj77WQ=",
"owner": "nix-community",
"repo": "nixos-cli",
"rev": "c2778572d75bc27ae2234653c5ce9489930d0c7d",
"type": "github"
},
"original": {
"owner": "nix-community",
"repo": "nixos-cli",
"type": "github"
}
},
"nixos-hardware": { "nixos-hardware": {
"locked": { "locked": {
"lastModified": 1751432711, "lastModified": 1751432711,
@ -1642,9 +1832,9 @@
}, },
"nixpkgs-xr": { "nixpkgs-xr": {
"inputs": { "inputs": {
"flake-compat": "flake-compat_5", "flake-compat": "flake-compat_6",
"flake-utils": "flake-utils_5", "flake-utils": "flake-utils_7",
"nixpkgs": "nixpkgs_10", "nixpkgs": "nixpkgs_11",
"treefmt-nix": "treefmt-nix" "treefmt-nix": "treefmt-nix"
}, },
"locked": { "locked": {
@ -1662,6 +1852,22 @@
} }
}, },
"nixpkgs_10": { "nixpkgs_10": {
"locked": {
"lastModified": 1751271578,
"narHash": "sha256-P/SQmKDu06x8yv7i0s8bvnnuJYkxVGBWLWHaU+tt4YY=",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "3016b4b15d13f3089db8a41ef937b13a9e33a8df",
"type": "github"
},
"original": {
"owner": "nixos",
"ref": "nixos-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs_11": {
"locked": { "locked": {
"lastModified": 1751271578, "lastModified": 1751271578,
"narHash": "sha256-P/SQmKDu06x8yv7i0s8bvnnuJYkxVGBWLWHaU+tt4YY=", "narHash": "sha256-P/SQmKDu06x8yv7i0s8bvnnuJYkxVGBWLWHaU+tt4YY=",
@ -1677,7 +1883,7 @@
"type": "github" "type": "github"
} }
}, },
"nixpkgs_11": { "nixpkgs_12": {
"locked": { "locked": {
"lastModified": 1751271578, "lastModified": 1751271578,
"narHash": "sha256-P/SQmKDu06x8yv7i0s8bvnnuJYkxVGBWLWHaU+tt4YY=", "narHash": "sha256-P/SQmKDu06x8yv7i0s8bvnnuJYkxVGBWLWHaU+tt4YY=",
@ -1693,7 +1899,7 @@
"type": "github" "type": "github"
} }
}, },
"nixpkgs_12": { "nixpkgs_13": {
"locked": { "locked": {
"lastModified": 0, "lastModified": 0,
"narHash": "sha256-9YrUjdztqi4Gz8n3mBuqvCkMo4ojrA6nASwyIKWMpus=", "narHash": "sha256-9YrUjdztqi4Gz8n3mBuqvCkMo4ojrA6nASwyIKWMpus=",
@ -1705,7 +1911,7 @@
"type": "indirect" "type": "indirect"
} }
}, },
"nixpkgs_13": { "nixpkgs_14": {
"locked": { "locked": {
"lastModified": 1724517639, "lastModified": 1724517639,
"narHash": "sha256-3eTrclsS5OYShbw0MRiiF3GJ8emUTwVzAZo96pdD7hM=", "narHash": "sha256-3eTrclsS5OYShbw0MRiiF3GJ8emUTwVzAZo96pdD7hM=",
@ -1719,7 +1925,7 @@
"type": "indirect" "type": "indirect"
} }
}, },
"nixpkgs_14": { "nixpkgs_15": {
"locked": { "locked": {
"lastModified": 1751011381, "lastModified": 1751011381,
"narHash": "sha256-krGXKxvkBhnrSC/kGBmg5MyupUUT5R6IBCLEzx9jhMM=", "narHash": "sha256-krGXKxvkBhnrSC/kGBmg5MyupUUT5R6IBCLEzx9jhMM=",
@ -1849,11 +2055,11 @@
}, },
"nixpkgs_9": { "nixpkgs_9": {
"locked": { "locked": {
"lastModified": 1751271578, "lastModified": 1740695751,
"narHash": "sha256-P/SQmKDu06x8yv7i0s8bvnnuJYkxVGBWLWHaU+tt4YY=", "narHash": "sha256-D+R+kFxy1KsheiIzkkx/6L63wEHBYX21OIwlFV8JvDs=",
"owner": "nixos", "owner": "nixos",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "3016b4b15d13f3089db8a41ef937b13a9e33a8df", "rev": "6313551cd05425cd5b3e63fe47dbc324eabb15e4",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -1866,7 +2072,7 @@
"norg": { "norg": {
"inputs": { "inputs": {
"flake-compat": "flake-compat_3", "flake-compat": "flake-compat_3",
"flake-utils": "flake-utils_3", "flake-utils": "flake-utils_4",
"nixpkgs": "nixpkgs_6" "nixpkgs": "nixpkgs_6"
}, },
"locked": { "locked": {
@ -1887,7 +2093,7 @@
"norg-meta": { "norg-meta": {
"inputs": { "inputs": {
"flake-compat": "flake-compat_4", "flake-compat": "flake-compat_4",
"flake-utils": "flake-utils_4", "flake-utils": "flake-utils_5",
"nixpkgs": "nixpkgs_7" "nixpkgs": "nixpkgs_7"
}, },
"locked": { "locked": {
@ -1907,7 +2113,7 @@
"nur": { "nur": {
"inputs": { "inputs": {
"flake-parts": "flake-parts_3", "flake-parts": "flake-parts_3",
"nixpkgs": "nixpkgs_11", "nixpkgs": "nixpkgs_12",
"treefmt-nix": "treefmt-nix_2" "treefmt-nix": "treefmt-nix_2"
}, },
"locked": { "locked": {
@ -2025,7 +2231,7 @@
"rbw-bitw": { "rbw-bitw": {
"inputs": { "inputs": {
"flakelib": "flakelib_2", "flakelib": "flakelib_2",
"nixpkgs": "nixpkgs_13", "nixpkgs": "nixpkgs_14",
"rust": "rust_2" "rust": "rust_2"
}, },
"locked": { "locked": {
@ -2064,27 +2270,28 @@
"infrastructure": "infrastructure", "infrastructure": "infrastructure",
"konawall-py": "konawall-py", "konawall-py": "konawall-py",
"lanzaboote": "lanzaboote", "lanzaboote": "lanzaboote",
"lix-module": "lix-module",
"minecraft": "minecraft", "minecraft": "minecraft",
"moonlight": "moonlight", "moonlight": "moonlight",
"neorg-overlay": "neorg-overlay", "neorg-overlay": "neorg-overlay",
"nh": "nh", "nh": "nh",
"niri": "niri",
"nix-gaming": "nix-gaming", "nix-gaming": "nix-gaming",
"nix-index-database": "nix-index-database", "nix-index-database": "nix-index-database",
"nixos-cli": "nixos-cli",
"nixos-hardware": "nixos-hardware", "nixos-hardware": "nixos-hardware",
"nixpkgs": "nixpkgs_9", "nixpkgs": "nixpkgs_10",
"nixpkgs-xr": "nixpkgs-xr", "nixpkgs-xr": "nixpkgs-xr",
"nur": "nur", "nur": "nur",
"plasma-manager": "plasma-manager", "plasma-manager": "plasma-manager",
"push2talk": "push2talk", "push2talk": "push2talk",
"rbw-bitw": "rbw-bitw", "rbw-bitw": "rbw-bitw",
"scalpel": "scalpel",
"solaar": "solaar", "solaar": "solaar",
"sops-nix": "sops-nix", "sops-nix": "sops-nix",
"spacebar": "spacebar", "spacebar": "spacebar",
"spicetify-nix": "spicetify-nix", "spicetify-nix": "spicetify-nix",
"split-monitor-workspaces": "split-monitor-workspaces",
"std": "std_2", "std": "std_2",
"systems": "systems_7", "systems": "systems_9",
"tree": "tree_2", "tree": "tree_2",
"utils": "utils", "utils": "utils",
"wezterm": "wezterm", "wezterm": "wezterm",
@ -2156,6 +2363,28 @@
} }
}, },
"rust-overlay_3": { "rust-overlay_3": {
"inputs": {
"nixpkgs": [
"nixos-cli",
"nix-options-doc",
"nixpkgs"
]
},
"locked": {
"lastModified": 1740796337,
"narHash": "sha256-FuoXrXZPoJEZQ3PF7t85tEpfBVID9JQIOnVKMNfTAb0=",
"owner": "oxalica",
"repo": "rust-overlay",
"rev": "bbac9527bc6b28b6330b13043d0e76eac11720dc",
"type": "github"
},
"original": {
"owner": "oxalica",
"repo": "rust-overlay",
"type": "github"
}
},
"rust-overlay_4": {
"inputs": { "inputs": {
"nixpkgs": [ "nixpkgs": [
"wezterm", "wezterm",
@ -2197,35 +2426,9 @@
"type": "github" "type": "github"
} }
}, },
"scalpel": {
"inputs": {
"flake-utils": [
"utils"
],
"nixpkgs": [
"nixpkgs"
],
"sops-nix": [
"sops-nix"
]
},
"locked": {
"lastModified": 1728502146,
"narHash": "sha256-W5/1J7F49hfGnb/yK8WF5NUcNsjNIcDCNyYnRT0NgKQ=",
"owner": "kittywitch",
"repo": "scalpel",
"rev": "5fbeec42ab00ecc5d99fc82c65c5d903ad14d3ba",
"type": "github"
},
"original": {
"owner": "kittywitch",
"repo": "scalpel",
"type": "github"
}
},
"snowfall-lib": { "snowfall-lib": {
"inputs": { "inputs": {
"flake-compat": "flake-compat_7", "flake-compat": "flake-compat_8",
"flake-utils-plus": "flake-utils-plus", "flake-utils-plus": "flake-utils-plus",
"nixpkgs": [ "nixpkgs": [
"solaar", "solaar",
@ -2249,7 +2452,7 @@
}, },
"solaar": { "solaar": {
"inputs": { "inputs": {
"flake-compat": "flake-compat_6", "flake-compat": "flake-compat_7",
"nixpkgs": [ "nixpkgs": [
"nixpkgs" "nixpkgs"
], ],
@ -2314,8 +2517,8 @@
}, },
"spicetify-nix": { "spicetify-nix": {
"inputs": { "inputs": {
"nixpkgs": "nixpkgs_14", "nixpkgs": "nixpkgs_15",
"systems": "systems_6" "systems": "systems_8"
}, },
"locked": { "locked": {
"lastModified": 1751171964, "lastModified": 1751171964,
@ -2331,27 +2534,6 @@
"type": "github" "type": "github"
} }
}, },
"split-monitor-workspaces": {
"inputs": {
"hyprland": [
"hyprland"
],
"nix-filter": "nix-filter"
},
"locked": {
"lastModified": 1751646985,
"narHash": "sha256-QQQr6iyOh8Mn6+sze9+mg57C/7aVA4na5gfVTHJ2WGY=",
"owner": "Duckonaut",
"repo": "split-monitor-workspaces",
"rev": "e9acfbc08f443f98c691e22f0a89b035eb060070",
"type": "github"
},
"original": {
"owner": "Duckonaut",
"repo": "split-monitor-workspaces",
"type": "github"
}
},
"std": { "std": {
"inputs": { "inputs": {
"nix-std": "nix-std_2" "nix-std": "nix-std_2"
@ -2534,6 +2716,36 @@
"type": "github" "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"
}
},
"tree": { "tree": {
"inputs": { "inputs": {
"nixpkgs": [ "nixpkgs": [
@ -2656,7 +2868,7 @@
"nixpkgs": [ "nixpkgs": [
"nixpkgs" "nixpkgs"
], ],
"rust-overlay": "rust-overlay_3", "rust-overlay": "rust-overlay_4",
"zlib": "zlib" "zlib": "zlib"
}, },
"locked": { "locked": {
@ -2740,6 +2952,39 @@
"type": "github" "type": "github"
} }
}, },
"xwayland-satellite-stable": {
"flake": false,
"locked": {
"lastModified": 1748488455,
"narHash": "sha256-IiLr1alzKFIy5tGGpDlabQbe6LV1c9ABvkH6T5WmyRI=",
"owner": "Supreeeme",
"repo": "xwayland-satellite",
"rev": "3ba30b149f9eb2bbf42cf4758d2158ca8cceef73",
"type": "github"
},
"original": {
"owner": "Supreeeme",
"ref": "v0.6",
"repo": "xwayland-satellite",
"type": "github"
}
},
"xwayland-satellite-unstable": {
"flake": false,
"locked": {
"lastModified": 1751228685,
"narHash": "sha256-MENtauGBhJ+kDeFaawvWGXaFG3Il6qQzjaP0RmtfM0k=",
"owner": "Supreeeme",
"repo": "xwayland-satellite",
"rev": "557ebeb616e03d5e4a8049862bbbd1f02c6f020b",
"type": "github"
},
"original": {
"owner": "Supreeeme",
"repo": "xwayland-satellite",
"type": "github"
}
},
"zlib": { "zlib": {
"flake": false, "flake": false,
"locked": { "locked": {

View file

@ -1,6 +1,10 @@
{ {
description = "Kat's Infrastructure"; description = "Kat's Infrastructure";
inputs = { inputs = {
lix-module = {
url = "https://git.lix.systems/lix-project/nixos-module/archive/2.93.2-1.tar.gz";
inputs.nixpkgs.follows = "nixpkgs";
};
systems.url = "github:nix-systems/default"; systems.url = "github:nix-systems/default";
# TODO: https://github.com/catppuccin/nix/issues/601 # TODO: https://github.com/catppuccin/nix/issues/601
catppuccin.url = "github:catppuccin/nix";#/194881dd2ad6303bc2d49f9ce484d127372d7465"; catppuccin.url = "github:catppuccin/nix";#/194881dd2ad6303bc2d49f9ce484d127372d7465";
@ -22,10 +26,6 @@
nixpkgs.follows = "nixpkgs"; nixpkgs.follows = "nixpkgs";
}; };
}; };
split-monitor-workspaces = {
url = "github:Duckonaut/split-monitor-workspaces";
inputs.hyprland.follows = "hyprland"; # <- make sure this line is present for the plugin to work as intended
};
# used for overriding unwanted flake inputs # used for overriding unwanted flake inputs
empty.url = "github:input-output-hk/empty-flake"; empty.url = "github:input-output-hk/empty-flake";
# self-explanatory # self-explanatory
@ -50,6 +50,12 @@
barcodebuddy.follows = "empty"; barcodebuddy.follows = "empty";
}; };
}; };
nixos-cli = {
type = "github";
owner = "nix-community";
repo = "nixos-cli";
inputs.nixpkgs.follows = "nixpkgs";
};
chaotic.url = "github:chaotic-cx/nyx/nyxpkgs-unstable"; chaotic.url = "github:chaotic-cx/nyx/nyxpkgs-unstable";
solaar = { solaar = {
# ewww flakehub ;; # ewww flakehub ;;
@ -60,7 +66,13 @@
url = "github:nix-community/nh"; url = "github:nix-community/nh";
inputs.nixpkgs.follows = "nixpkgs"; inputs.nixpkgs.follows = "nixpkgs";
}; };
niri = {
url = "github:sodiboo/niri-flake";
inputs = {
nixpkgs.follows = "nixpkgs";
nixpkgs-stable.follows = "nixpkgs";
};
};
moonlight = { moonlight = {
url = "github:moonlight-mod/moonlight"; url = "github:moonlight-mod/moonlight";
inputs.nixpkgs.follows = "nixpkgs"; inputs.nixpkgs.follows = "nixpkgs";
@ -178,15 +190,6 @@
nixpkgs-stable.follows = "nixpkgs"; nixpkgs-stable.follows = "nixpkgs";
}; };
}; };
# secrets templating
scalpel = {
url = "github:kittywitch/scalpel";
inputs = {
flake-utils.follows = "utils";
nixpkgs.follows = "nixpkgs";
sops-nix.follows = "sops-nix";
};
};
# pre-computed nix-index # pre-computed nix-index
nix-index-database = { nix-index-database = {
url = "github:Mic92/nix-index-database"; url = "github:Mic92/nix-index-database";

View file

@ -54,9 +54,6 @@ ${pkgs.glib}/bin/gsettings set "$gnome_schema" font-name "$font_name"
}; };
xwayland.enable = true; xwayland.enable = true;
package = inputs.hyprland.packages.${pkgs.system}.hyprland; package = inputs.hyprland.packages.${pkgs.system}.hyprland;
plugins = [
inputs.split-monitor-workspaces.packages.${pkgs.system}.split-monitor-workspaces
];
settings = { settings = {
# TODO: break it up # TODO: break it up
windowrule = let windowrule = let
@ -128,12 +125,6 @@ ${pkgs.glib}/bin/gsettings set "$gnome_schema" font-name "$font_name"
"legcord --enable-features=WaylandLinuxDrmSyncobj,UseOzonePlatform --ozone-platform=wayland" "legcord --enable-features=WaylandLinuxDrmSyncobj,UseOzonePlatform --ozone-platform=wayland"
"spotify --enable-features=WaylandLinuxDrmSyncobj,UseOzonePlatform --ozone-platform=wayland" "spotify --enable-features=WaylandLinuxDrmSyncobj,UseOzonePlatform --ozone-platform=wayland"
]; ];
plugin.split-monitor-workspaces = {
count = 10;
keep_focused = 0;
enable_notifications = 0;
enable_persistent_workspaces = 1;
};
group.groupbar = { group.groupbar = {
font_family = "Monaspace Krypton"; font_family = "Monaspace Krypton";
font_size = 12; font_size = 12;
@ -239,9 +230,6 @@ ${pkgs.glib}/bin/gsettings set "$gnome_schema" font-name "$font_name"
"$mod SHIFT, F${if ws == "0" then "10" else ws}, movetoworkspacesilent, ${toString (x + 11)}" "$mod SHIFT, F${if ws == "0" then "10" else ws}, movetoworkspacesilent, ${toString (x + 11)}"
"$mod ALT, ${ws}, split-workspace, ${toString (x + 1)}" "$mod ALT, ${ws}, split-workspace, ${toString (x + 1)}"
"$mod SHIFT ALT, ${ws}, split-movetoworkspacesilent, ${toString (x + 1)}"
"$mod ALT, F${if ws == "0" then "10" else ws}, split-workspace, ${toString (x + 11)}"
"$mod SHIFT ALT, F${if ws == "0" then "10" else ws}, split-movetoworkspacesilent, ${toString (x + 11)}"
] ]
) )
10) 10)

View file

@ -0,0 +1,65 @@
{ pkgs, config, ... }: {
programs.niri.settings.spawn-at-startup = let
import-gsettings = pkgs.writeShellScriptBin "import-gsettings" ''
# usage: import-gsettings
config="''${XDG_CONFIG_HOME:-$HOME/.config}/gtk-3.0/settings.ini"
if [ ! -f "$config" ]; then exit 1; fi
gnome_schema="org.gnome.desktop.interface"
gtk_theme="$(grep 'gtk-theme-name' "$config" | sed 's/.*\s*=\s*//')"
icon_theme="$(grep 'gtk-icon-theme-name' "$config" | sed 's/.*\s*=\s*//')"
cursor_theme="$(grep 'gtk-cursor-theme-name' "$config" | sed 's/.*\s*=\s*//')"
font_name="$(grep 'gtk-font-name' "$config" | sed 's/.*\s*=\s*//')"
${pkgs.glib}/bin/gsettings set "$gnome_schema" gtk-theme "$gtk_theme"
${pkgs.glib}/bin/gsettings set "$gnome_schema" icon-theme "$icon_theme"
${pkgs.glib}/bin/gsettings set "$gnome_schema" cursor-theme "$cursor_theme"
${pkgs.glib}/bin/gsettings set "$gnome_schema" font-name "$font_name"
'';
in [
{
command = [
"${import-gsettings}/bin/import-gsettings"
];
}
{
command = [
"${pkgs.systemd}/bin/systemctl"
"--user"
"start"
"waybar.service"
];
}
{
command = [
"${pkgs.systemd}/bin/systemctl"
"--user"
"restart"
"konawall-py.service"
];
}
{
command = [
"${pkgs.systemd}/bin/systemctl"
"--user"
"start"
"mako.service"
];
}
#{
# command = [
# "${pkgs.xwayland-satellite}/bin/xwayland-satellite"
# ];
#}
# program autostart
{
command = [
"firefox"
];
}
{
command = [
"discord"
];
}
];
}

View file

@ -0,0 +1,21 @@
{ config, ... }: {
services.avizo = {
enable = true;
settings = {
default = {
block-count = 100;
block-spacing = 0;
border-radius = 8;
border-width = 2;
background = "rgba(${builtins.toString config.palette.mantle.rgb.r}, ${builtins.toString config.palette.mantle.rgb.g}, ${builtins.toString config.palette.mantle.rgb.b}, 1)";
border-color = "rgba(${builtins.toString config.palette.${config.catppuccin.accent}.rgb.r}, ${
builtins.toString config.palette.${config.catppuccin.accent}.rgb.g
}, ${builtins.toString config.palette.${config.catppuccin.accent}.rgb.b}, 1)";
bar-fg-color = "rgba(${builtins.toString config.palette.${config.catppuccin.accent}.rgb.r}, ${
builtins.toString config.palette.${config.catppuccin.accent}.rgb.g
}, ${builtins.toString config.palette.${config.catppuccin.accent}.rgb.b}, 1)";
bar-bg-color = "rgba(${builtins.toString config.palette.mantle.rgb.r}, ${builtins.toString config.palette.mantle.rgb.g}, ${builtins.toString config.palette.mantle.rgb.b}, 1)";
};
};
};
}

View file

@ -0,0 +1,145 @@
{ config, pkgs, lib, std, ... }: let
inherit (std) list;
inherit (lib.modules) mkMerge;
in {
programs.niri.settings.binds = let
bindWorkspace = key: workspace: {
"Mod+${key}".action.focus-workspace = workspace;
"Mod+Ctrl+${key}".action.move-column-to-workspace = workspace;
};
workspaceBindings =
list.map (v: bindWorkspace (builtins.toString v) v) (list.range 1 9)
++ [
(
bindWorkspace "0" 10
)
];
in mkMerge (workspaceBindings ++ [{
# Transcribed: https://github.com/sodiboo/niri-flake/issues/483
# thank you Pacman99 you chad :3
"Mod+Q".action.close-window = {};
"Mod+O".action.toggle-overview = {};
"Mod+Left".action.focus-column-left = {};
"Mod+Down".action.focus-window-down = {};
"Mod+Up".action.focus-window-up = {};
"Mod+Right".action.focus-column-right = {};
"Mod+H".action.focus-column-left = {};
"Mod+J".action.focus-window-down = {};
"Mod+K".action.focus-window-up = {};
"Mod+L".action.focus-column-right = {};
"Mod+Ctrl+Left".action.move-column-left = {};
"Mod+Ctrl+Down".action.move-window-down = {};
"Mod+Ctrl+Up".action.move-window-up = {};
"Mod+Ctrl+Right".action.move-column-right = {};
"Mod+Ctrl+H".action.move-column-left = {};
"Mod+Ctrl+J".action.move-window-down = {};
"Mod+Ctrl+K".action.move-window-up = {};
"Mod+Ctrl+L".action.move-column-right = {};
"Mod+Home".action.focus-column-first = {};
"Mod+End".action.focus-column-last = {};
"Mod+Ctrl+Home".action.move-column-to-first = {};
"Mod+Ctrl+End".action.move-column-to-last = {};
"Mod+Shift+Left".action.focus-monitor-left = {};
"Mod+Shift+Down".action.focus-monitor-down = {};
"Mod+Shift+Up".action.focus-monitor-up = {};
"Mod+Shift+Right".action.focus-monitor-right = {};
"Mod+Shift+H".action.focus-monitor-left = {};
"Mod+Shift+J".action.focus-monitor-down = {};
"Mod+Shift+K".action.focus-monitor-up = {};
"Mod+Shift+L".action.focus-monitor-right = {};
"Mod+Shift+Ctrl+Left".action.move-column-to-monitor-left = {};
"Mod+Shift+Ctrl+Down".action.move-column-to-monitor-down = {};
"Mod+Shift+Ctrl+Up".action.move-column-to-monitor-up = {};
"Mod+Shift+Ctrl+Right".action.move-column-to-monitor-right = {};
"Mod+Shift+Ctrl+H".action.move-column-to-monitor-left = {};
"Mod+Shift+Ctrl+J".action.move-column-to-monitor-down = {};
"Mod+Shift+Ctrl+K".action.move-column-to-monitor-up = {};
"Mod+Shift+Ctrl+L".action.move-column-to-monitor-right = {};
"Mod+Page_Down".action.focus-workspace-down = {};
"Mod+Page_Up".action.focus-workspace-up = {};
"Mod+U".action.focus-workspace-down = {};
"Mod+I".action.focus-workspace-up = {};
"Mod+Ctrl+Page_Down".action.move-column-to-workspace-down = {};
"Mod+Ctrl+Page_Up".action.move-column-to-workspace-up = {};
"Mod+Ctrl+U".action.move-column-to-workspace-down = {};
"Mod+Ctrl+I".action.move-column-to-workspace-up = {};
"Mod+Shift+Page_Down".action.move-workspace-down = {};
"Mod+Shift+Page_Up".action.move-workspace-up = {};
"Mod+Shift+U".action.move-workspace-down = {};
"Mod+Shift+I".action.move-workspace-up = {};
"Mod+WheelScrollDown" = {
cooldown-ms = 150;
action.focus-workspace-down = {};
};
"Mod+WheelScrollUp" = {
cooldown-ms = 150;
action.focus-workspace-up = {};
};
"Mod+Ctrl+WheelScrollDown" = {
cooldown-ms = 150;
action.move-column-to-workspace-down = {};
};
"Mod+Ctrl+WheelScrollUp" = {
cooldown-ms = 150;
action.move-column-to-workspace-up = {};
};
"Mod+WheelScrollRight".action.focus-column-right = {};
"Mod+WheelScrollLeft".action.focus-column-left = {};
"Mod+Ctrl+WheelScrollRight".action.move-column-right = {};
"Mod+Ctrl+WheelScrollLeft".action.move-column-left = {};
"Mod+Shift+WheelScrollDown".action.focus-column-right = {};
"Mod+Shift+WheelScrollUp".action.focus-column-left = {};
"Mod+Ctrl+Shift+WheelScrollDown".action.move-column-right = {};
"Mod+Ctrl+Shift+WheelScrollUp".action.move-column-left = {};
"Mod+Comma".action.consume-window-into-column = {};
"Mod+Period".action.expel-window-from-column = {};
"Mod+R".action.switch-preset-column-width = {};
"Mod+Shift+R".action.reset-window-height = {};
"Mod+F".action.maximize-column = {};
"Mod+Shift+F".action.fullscreen-window = {};
"Mod+C".action.center-column = {};
"Mod+Minus".action.set-column-width = "-10%";
"Mod+Equal".action.set-column-width = "+10%";
"Mod+Shift+Minus".action.set-window-height = "-10%";
"Mod+Shift+Equal".action.set-window-height = "+10%";
"Print".action.screenshot = {};
"Ctrl+Print".action.screenshot-screen = {};
"Alt+Print".action.screenshot-window = {};
# The quit action will show a confirmation dialog to avoid accidental exits.
"Mod+Shift+E".action.quit = {};
# Powers off the monitors. To turn them back on, do any input like
# moving the mouse or pressing any other key.
"Mod+Shift+P".action.power-off-monitors = {};
# Kat
"XF86AudioRaiseVolume".action.spawn = ["wpctl" "set-volume" "@DEFAULT_AUDIO_SINK@" "0.1+"];
"XF86AudioLowerVolume".action.spawn = ["wpctl" "set-volume" "@DEFAULT_AUDIO_SINK@" "0.1-"];
"XF86AudioMute".action.spawn = ["wpctl" "set-mute" "@DEFAULT_AUDIO_SINK@" "toggle"];
"XF86AudioPlay".action.spawn = ["${pkgs.playerctl}/bin/playerctl" "play-pause"];
"XF86AudioNext".action.spawn = ["${pkgs.playerctl}/bin/playerctl" "next"];
"XF86AudioPrev".action.spawn = ["${pkgs.playerctl}/bin/playerctl" "prev"];
"Mod+T".action.spawn = ["${config.programs.wezterm.package}/bin/wezterm"];
"Mod+D".action.spawn = ["${config.programs.wofi.package}/bin/wofi" "-t" "wezterm" "-IS" "drun"];
"Mod+Shift+D".action.spawn = ["${config.programs.wofi.package}/bin/wofi" "-t" "wezterm" "-IS" "run"];
"Mod+Escape".action.spawn = ["${config.programs.wlogout.package}/bin/wlogout" "-p" "layer-shell"];
"Mod+Shift+Escape".action.spawn = ["${config.programs.swaylock.package}/bin/swaylock" "-f"];
#"Print".action.spawn = ["${pkgs.grimblast}/bin/grimblast" "copy" "area"];
}]);
}

View file

@ -0,0 +1,12 @@
{ config, pkgs, ... }: {
catppuccin.cursors.enable = true;
home.pointerCursor = {
dotIcons.enable = true;
x11 = {
enable = true;
defaultCursor = config.home.pointerCursor.name;
};
gtk.enable = true;
size = 32;
};
}

View file

@ -0,0 +1,65 @@
{
inputs,
pkgs,
config,
...
}: let
konawallConfig = {
interval = 30 * 60;
rotate = true;
source = "e621";
tags = [
"-rating:s"
"-male/male"
"-five_nights_at_freddy's"
#"touhou"
"-male"
"-large_breasts"
"-scalie"
#"-my_little_pony"
"-sonic_the_hedgehog"
"-amputee"
"-inflation"
"-pool_toy"
"-cuckold"
"-gore"
"-human"
"-animated"
"-hyper"
"-death"
"ratio:>=1.3"
"-muscular_male"
"-model_sheet"
"score:>=100"
"width:>=1500"
];
logging = {
file = "INFO";
console = "DEBUG";
};
};
in {
sops.secrets.konawall-py-env = {
sopsFile = ./konawall.yaml;
};
home.packages = [
inputs.konawall-py.packages.${pkgs.system}.konawall-py
];
xdg.configFile = {
"konawall/config.toml".source = (pkgs.formats.toml {}).generate "konawall-config" konawallConfig;
};
systemd.user.services.konawall-py = {
Unit = {
Description = "konawall-py";
X-Restart-Triggers = [(toString config.xdg.configFile."konawall/config.toml".source)];
After = ["graphical-session.target" "network-online.target"];
};
Service = {
ExecStart = "${inputs.konawall-py.packages.${pkgs.system}.konawall-py}/bin/konawall";
Restart = "on-failure";
RestartSec = "1s";
EnvironmentFile = config.sops.secrets.konawall-py-env.path;
};
Install = {WantedBy = ["graphical-session.target"];};
};
}

View file

@ -0,0 +1,110 @@
konawall-py-env: ENC[AES256_GCM,data:8SWQgZkKXffy+GfhbIkZAB3ZJ9a+q5yPmMdt3lgrzezguX23p7vqgRac9AHq1x8=,iv:K5Pj9FuLWbpah8WaD5TZwmomZUgJnuaCdzFlu7K4n/w=,tag:qTlbMlsTeTnXSm+lyDe1iw==,type:str]
sops:
shamir_threshold: 1
age:
- recipient: age1n4kdchmkk3rfkaknxhveqr2ftprdpgwckutt23y6u8639lazzuks77tgav
enc: |
-----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBSQ2twMTY4UGhEZzNjRG1P
UDhPV1RzcnBwdG9aaVdjV1FxU0dsNzRURVJJCmwvbXRUVFExNjBRb09GTXREZmd4
WS9CclFlbXdhUkNITFI0bW9EVS9YNTQKLS0tIGxPS3JvNEJZSCswYlRZdHJkN2lH
ZHBDblNCN3RmbUtrdTEzVDFQdzI3eDQKY/Q+zAs4cTr2fWDdVqNR+fYRnSIO6s6a
1UOqkFAIZOMmrYMiBu132zgBNT0HU0avvEkZ85Wp72HPv1bUz2QJ4g==
-----END AGE ENCRYPTED FILE-----
- recipient: age1cnu37d5fqyahh9vvc4hj6z6k8ur9ksuefln7sr6g3emmn927eutqxdawuh
enc: |
-----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBQNUF0NXRNRTAzRzc1ZnUv
cTdmNm8zRTN5WUJ2WUl4aDVmbUNUbzdxd0djCjg3SkF1bmZITW1GNVJ1cHl2QWRP
QitpRHAzNUhWLzNQZUxLeitKQmkyNGsKLS0tIDJkTEVrOS9tZlg1bi9EeXFzSkNz
M2FzNFg4TDc5d0pWOHhUSjJ3Vko2Q0kKDDOhuMe57zE8GSWja37WJrm+dlSROzde
2+RwG6OjDAltWtPpmiLmFCnnGLu3VGYZupbwOtWfBxWiZFQfaYsW9w==
-----END AGE ENCRYPTED FILE-----
- recipient: age1a0m73qr8hhuz8xemv4vymf4wmpghm2hst8wgrn3pn65ext5mf4ksk0vsdm
enc: |
-----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBuWmh0Y3hpcXF1RzYvMEJZ
dms2akl4SHBSU1dPaERtM1l5NlJGQjBkc2xnCjM1UEFJZVBSK2ZMaE5GM3lTTlov
RlJxK3kyd0FWYlZncVowd2t1amp2UlEKLS0tIEZwRVVoak90bXVvSlhqenRYMldN
ZDdPOUh0SkFMdDlRV2pIby9ObFZlNXcKleHAiVFw8B6axyOUBhA3nhh+5Q6q82WI
IlOK9nsFJ4yYCU+IZ6TRkAbu7m8xCC24yBOMY3cUZzYc+3HxjIByDw==
-----END AGE ENCRYPTED FILE-----
- recipient: age18hpxz0ghvswv9k30cle73prvnzrsuczqh87jjdk9fl50j3ddndmq9xae0n
enc: |
-----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBWQ01DWDZtVHpKbFlmREJk
Q2hUdkRUQ1dOWVRaL1NQU3Y1a2NneXpiaVNnClZrZGo5RnIwSk1UbFJ3K1lIZDl3
bmxWUGR2ZTNxaG9aZEhBQlhrQ0g5TUkKLS0tIDM4bHZWTFR2YUZlT3QrSms2SElB
R01tUEJxRy9mQkNlQUloOFk4b0JyOEUKihPiTr07wiT32FBA3KQplBq21EgzyjEA
iXkJDTX5cBn62P53UO/3Gkgi3CG9BjxposrAq5Jmvylej6EgCF13NQ==
-----END AGE ENCRYPTED FILE-----
- recipient: age1xgy03g3vjydsxcl0qpdgm8rahjcjq95ucxfwlgr22zwjx3p7jf2s9jk6u5
enc: |
-----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSAxdktCby9jdG4yR0tIZ2JE
N2F2TkRsaXpuOHNXYVBid3NHU21HWFpQOEVFClRIbXVBNm9GMTVyQno5eGNwRkFU
NDhZZDBZT0p1SDh5SW1ycjM2SXZ3R3MKLS0tIGJ2R01TaFFHNnU2cG1wcHA3WkI3
NWxYRDZzZS9Bc25qbW9BUXZaL09rZXMKdpveRhf73CNVCiU+Xjo9TNxW+NTHLJNq
EhYYMnIEtzWDWQOJBzed8+4dpVpjLxJ1Z4EATdRV/vSNLuH+2NENOg==
-----END AGE ENCRYPTED FILE-----
- recipient: age1fv5dafs4n3r5n83qm2hfz7xmnflsz0xf9r3saralrptpgf8mvuxq4t8k3u
enc: |
-----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSAwZUlsZmJZU1JXS1ZxdFNq
emoxdEY3dzZ4ajdWZ1IwTHJhNjZTdUFwR1EwCmo2M3FNaGw0M3phWGFHbThlRnAw
aTFJT3Zkd0RRUTBub3RyTWRhUWl5UTAKLS0tIEpmRlFVeWZILzkzR2hFUG9UbHFS
R0dsOGpPWVJQNkFOd0FHbnBWZ1ZvL1EKsTb8ToKytd5VPig7+koYsMYIKyglIuZm
KvyEgYScynYRiYCjVH92NUo2VaNV+i2g+syUIrcgDvzGa98fgnFITw==
-----END AGE ENCRYPTED FILE-----
- recipient: age120530yclr75k6nrzp6k5jjftj8j4q9v3533guupzk4ct86mjxszqg9e5t5
enc: |
-----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSB1eEN6MS9kVkMySTFpVnNZ
YytlVjJhdUxWQ1I0UkgrWnM0REFUakkvYkJrCkUrRkpXa09rUnByemdJdEljcW10
R01uRkF1WnQ5OTBFOWRuMmtGSkZmT3MKLS0tIFZhNms3blpHWGtJM203Wk5RT1R6
emE2VjJPcnNLTnNNOCtYMFRLd3VuV3cKYdupODU2h9PQN0nXlAkZaaJE+fUNQGmV
TKv6OP8MiWdle50eMvEJCy7sEPTcq02Xwm3cKJCo3k+N2rUPfyf2BQ==
-----END AGE ENCRYPTED FILE-----
- recipient: age1c4atxfp05u7zm875s6q8p82ve96rqqpq9smktxlur8pk2yc3qvgql46dp9
enc: |
-----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBTZHZKcHBOWDZROWc5ZEVS
dW9oT01zR00rUlZOVGhFQXJSS3A4cGZUR21rCkVmUWRvZ3BpMllSdUY4SkNiSDhs
bmt6KzkwWnVObkdJeXV3WWFRdGxlc28KLS0tIDdaNTVSWjNxazhVanA2Mk9QTmlr
cEdOZTlKeWdHREpJQ0VDVlN4eG5LWkEKO9sLRqGxtJUKjeQsvZAodBv1Cvs4z1ut
LptNfGOJQxxwHazKb5VdoXe6Z6qOxciQ1ngNetLC7yEPzEs51smFOg==
-----END AGE ENCRYPTED FILE-----
- recipient: age1rjldv3fn3q686647exmcukthr32gmp6s3axs0lhyenvru9ajp9rs24ukvz
enc: |
-----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBveEE2Y0d4RFp2Q1NQV2g3
K1pSSFRNeXlzWlo2U211SzM5Rjg5MG5EUmpRCkhYMVhuS2tONnpVdHJNZ3NGS3kz
Y09KWitzRHIwZnQ4MmR5elZiSGVZdzQKLS0tIFJIcGR1ZTBjSUREeVIvSnlEdzNZ
Q2JJNi9EMG5RMi94WFpncThCdExmM3cKUD+TsPY0T5YilXlpRw4W1cQLeDhOyo1K
TKvcIWq/+vfVa8Smcg2L/9tX5B2uHXDB0UXDpaMfazgsFu4ja7nvSg==
-----END AGE ENCRYPTED FILE-----
lastmodified: "2025-02-28T21:15:38Z"
mac: ENC[AES256_GCM,data:2QggqmZhRgx+kpvDZOBU/KBLruwxbD4F3NHTiNK2N8Ux133pgLDjP88HDmBy8ZRXmGFdkUK0IqOSx1Axy3qpy14DlSdOw9L/WQhOCybEX21ib+ANb90275FtD+7J8luIvOPbCtus9c9gpqYQIirlQMqwkMZ1QADv62ewmVUJD6w=,iv:4V9KA9oq1TR5+cFtZdEop7haPOavRaRd6wwgJDyJeXQ=,tag:MXwB98KN5kit4Oyl+qQFLw==,type:str]
pgp:
- created_at: "2025-06-27T20:11:04Z"
enc: |-
-----BEGIN PGP MESSAGE-----
hQIMA82M54yws73UARAAiUcVShX8Vuf1EW/5Z0OrkBLoMVRaF8FV/CvHmdNZNnIz
K0e0XTyNRSFBwy530VSSgJ5m/db+fQ6SAVEPIJWd22g4yKsHUZOuApQQtdVDQsPB
UG7zKJEtDVDmcMzoKuZx5M/TQhWdGCP1Ut3vYJZ1scDhxuum5RKLzO4bZyHx0NPy
q3U0TRo4RQHtrOGiiBLJnCJhYWqgfGZe3M/Q6VakX5CF0Yy1CmvyCrmHBgjQJ1Br
lMdMpXyTIwkCXOGQYocYOERg1DxcM6eEo4O65tuo0nLG5BExa5Oy5f35O3j73fq9
DHpM7UjSOnsDAuQY0oMpjIaXRPvH/7yBk0hKV1XI9PuC8dDAe25jLvL82UAaMvRC
FKQkLBezYVZB+g8JH0a+ki9ibMk8hpcSQQPaengbiKHROxIXg6L4wZKXs3jFAjVE
xy0NfgLxrBrAXnx0exNl/gokU+LISZ95XgGN6nkjdOllonEOHq78q5kLHwD5KCoy
6qm4Mmv4YdiClRy7NA0lpIRjFeHprj7ZF57tt0vS3yNTaBtVKcUWRwphQvSmcnlF
g5TPWu7x8qQ0gaB5BY+J6oJguqQI7kqWoq1xG2FUWq6klBGumFBWJ/ajd7z3ZyOM
RwUei6PNsXdBcKeQG8dBKK4D0RUakXWjbTyQYHElr0CH06eoNmKcNQlGc4ACrTnS
XgHbkY8kbowDgSx0e7YR4wdtqwgYH7xdcuDyc07iYwL4dWseu8UK5NvSHlXHXvFS
C/h8Z0qOalE1ogzL/gW9kgkfWm7O+EOIm1VqgO1Edv15iFySLTynA6bV9lmzLDw=
=i4jk
-----END PGP MESSAGE-----
fp: CD8CE78CB0B3BDD4
unencrypted_suffix: _unencrypted
version: 3.9.4

View file

@ -0,0 +1,32 @@
{
config,
pkgs,
lib,
...
}: let
inherit (config.base16) palette;
inherit (lib.modules) mkForce;
in {
systemd.user.services = {
mako = {
Unit = {
Description = "mako";
X-Restart-Triggers = [(toString config.xdg.configFile."mako/config".source)];
};
Service = {
ExecStart = "${pkgs.mako}/bin/mako";
Restart = "always";
};
Install = {WantedBy = ["graphical-session.target"];};
};
};
services.mako = mkForce {
enable = true;
font = "Monaspace Krypton 10";
defaultTimeout = 3000;
borderColor = palette.base08;
backgroundColor = "${palette.base00}BF";
textColor = palette.base05;
};
}

View file

@ -0,0 +1,89 @@
{ config, pkgs, lib, ... }: let
inherit (lib.meta) getExe;
in {
home.packages = with pkgs; [
wl-clipboard
wlr-randr
wl-screenrec
slurp
grim
pavucontrol
brightnessctl
playerctl
glib
pcmanfm
];
programs.niri = {
settings = {
cursor = {
inherit (config.home.pointerCursor) size;
theme = config.home.pointerCursor.name;
};
gestures.hot-corners.enable = false;
input = {
keyboard = {
xkb = {
options = "compose:rctrl,ctrl:nocaps";
};
};
mouse = {
accel-profile = "flat";
};
touchpad = {
dwt = true;
dwtp = true;
};
focus-follows-mouse.enable = true;
};
layout = {
background-color = config.palette.base.hex;
gaps = 10;
always-center-single-column = true;
preset-column-widths = [
{ proportion = 0.33333; }
{ proportion = 0.5; }
{ proportion = 0.66667; }
{ proportion = 1.0; }
];
default-column-width = {
proportion = 1.0;
};
border = {
enable = true;
width = 2;
active.color = config.palette.surface0.hex;
inactive.color = config.palette.surface0.hex;
urgent.color = config.palette.red.hex;
};
focus-ring = {
enable = false;
width = 2;
active.color = config.palette.${config.catppuccin.accent}.hex;
};
shadow = {
enable = true;
color = config.palette.crust.hex;
};
};
workspaces = {
browser = {};
chat = {};
vidya = {};
media = {};
};
environment = {
MOZ_ENABLE_WAYLAND = "1";
XDG_CURRENT_DESKTOP = "niri";
GDK_BACKEND = "wayland,x11";
CLUTTER_BACKEND = "wayland";
};
xwayland-satellite = {
enable = true;
path = getExe pkgs.xwayland-satellite-unstable;
};
prefer-no-csd = true;
clipboard.disable-primary = true;
hotkey-overlay.skip-at-startup = true;
};
};
}

View file

@ -0,0 +1,25 @@
{ pkgs, config, ... }: {
services.swayidle = {
enable = true;
timeouts = [
{
timeout = 180;
command = "${pkgs.libnotify}/bin/notify-send 'Locking in 5 seconds from now.'";
}
{
timeout = 185;
command = "${config.programs.swaylock.package}/bin/swaylock* -f";
}
{
timeout = 600;
command = "${config.programs.niri.package}/bin/niri msg action power-off-monitors";
}
];
events = [
{
event = "before-sleep";
command = "${config.programs.swaylock.package}/bin/swaylock* -f";
}
];
};
}

View file

@ -0,0 +1,17 @@
{ pkgs, ... }: {
programs.swaylock = {
enable = true;
package = pkgs.swaylock-effects;
settings = {
screenshots = true;
indicator = true;
clock = true;
grace = 2;
fade-in = 2;
effect-blur = "7x5";
effect-vignette = "0.5:0.5";
show-failed-attempts = true;
font = "Monaspace Krypton";
};
};
}

View file

@ -0,0 +1,3 @@
_: {
services.swww.enable = true;
}

View file

@ -0,0 +1,211 @@
_: {
programs.waybar = {
enable = true;
systemd.enable = true;
style = ''
* {
border: none;
border-radius: 0;
font-family: Monaspace Krypton, monospace;
font-size: 13px;
min-height: 0;
}
window#waybar {
all:unset;
}
.modules-left, .modules-right, .modules-center {
background: alpha(@base, 0.9);
box-shadow: 0px 0px 2px rgba(0,0,0,0.6);
color: @text;
padding: 5px;
margin: 2px 4px;
border: 1px solid @lavender;
}
tooltip {
background: rgba(43, 48, 59, 0.5);
border: 1px solid rgba(100, 114, 125, 0.5);
}
tooltip label {
color: white;
}
#workspaces {
border-right: 1px solid @surface2;
}
#workspaces button.persistent {
background: @theme_unfocused_bg_color;
color: @subtext1;
}
#workspaces button {
padding: 2px 5px;
background: @surface0;
border-bottom: 3px solid transparent;
}
#workspaces button.empty {
background: @crust;
color: @subtext1;
}
#workspaces button.visible {
background: @pink;
color: @theme_selected_fg_color;
border-bottom: 3px solid @rosewater;
}
#workspaces button.urgent {
background: @red;
color: @theme_selected_fg_color;
}
#workspaces button.active, #workspaces button.focused {
background: @theme_selected_bg_color;
color: @theme_selected_fg_color;
border-bottom: 3px solid white;
}
#window {
padding: 0 10px;
}
window#waybar.empty #window {
padding: 0px;
margin: 0px;
}
#mode, #clock, #battery, #idle_inhibitor, #tray, #wireplumber, #bluetooth, #backlight, #mpris {
padding: 0 5px;
margin: 0 5px;
}
#mpris {
color: @mantle;
}
#mpris.playing {
background-color: @lavender;
}
#mpris.paused {
background-color: @mauve;
}
#mpris.stopped {
background-color: @rosewater;
}
#mode {
background: #64727D;
border-bottom: 3px solid white;
}
#clock {
}
#battery {
}
#battery.charging {
color: white;
background-color: #26A65B;
}
@keyframes blink {
to {
background-color: #ffffff;
color: black;
}
}
#battery.warning:not(.charging) {
background: #f53c3c;
color: white;
animation-name: blink;
animation-duration: 0.5s;
animation-timing-function: steps(12);
animation-iteration-count: infinite;
animation-direction: alternate;
}
'';
settings.main = {
layer = "top";
position = "top";
mode = "dock";
exclusive = true;
modules-left = [
"niri/workspaces"
"niri/window"
];
modules-center = [
"clock"
"mpris"
];
modules-right = [
"privacy"
"bluetooth"
"wireplumber"
"idle_inhibitor"
"power-profiles-daemon"
"backlight"
"battery"
"tray"
];
idle_inhibitor = {
format = "idin {icon}";
format-icons = {
activated = "active";
deactivated = "inactive";
};
};
bluetooth = {
on-click = "blueman-manager";
format = "bt {status}";
format-connected-battery = "bt {device_alias} {device_battery_percentage}%";
format-connected = "bt {num_connections} connected";
tooltip-format = "{controller_alias}\t{controller_address}\n\n{num_connections} connected";
tooltip-format-connected = "{controller_alias}\t{controller_address}\n\n{num_connections} connected\n\n{device_enumerate}";
tooltip-format-enumerate-connected = "{device_alias}\t{device_address}";
tooltip-format-enumerate-connected-battery = "{device_alias}\t{device_address}\t{device_battery_percentage}%";
};
wireplumber = {
format = "vol {volume}%";
max-volume = 150;
};
backlight = {
format = "bl {percent}%";
};
battery = {
format = "bat {capacity}%";
format-tooltip = "{power}W, {timeTo}, {health}%";
interval = 60;
states = {
warning = 30;
critical = 15;
};
};
tray = {
spacing = 4;
};
clock = {
format = "{:%F %H:%M %Z}";
interval = 60;
};
};
};
}

View file

@ -0,0 +1,39 @@
_: {
programs.niri.settings.window-rules = [
{
draw-border-with-background = false;
clip-to-geometry = true;
geometry-corner-radius =
let
r = 5.0;
in
{
bottom-left = r;
bottom-right = r;
top-left = r;
top-right = r;
};
}
{
matches = [ { app-id = "^firefox$"; } ];
open-on-workspace = "browser";
}
{
matches = [
{ app-id = "^vesktop$"; }
{ app-id = "^discord$"; }
{ app-id = "^org.telegram.desktop$"; }
];
open-on-workspace = "chat";
}
{
matches = [ { app-id = "^steam_app_default$"; } ];
open-on-workspace = "vidya";
}
{
matches = [ { app-id = "^spotify$"; } ];
open-on-workspace = "media";
}
];
}

View file

@ -0,0 +1,5 @@
_: {
programs.wlogout = {
enable = true;
};
}

View file

@ -0,0 +1,12 @@
_: {
programs.wofi = {
enable = true;
settings = {
insensitive = true;
allow_images = true;
hide_scroll = true;
mode = "dmenu";
prompt = "";
};
};
}

View file

@ -0,0 +1,14 @@
_: {
xdg = {
enable = true;
autostart.enable = true;
mime.enable = true;
mimeApps = {
enable = true;
defaultApplications = {
"inode/directory" = "pcmanfm.desktop";
};
};
};
}

View file

@ -10,7 +10,8 @@ in {
enable = true; enable = true;
scripts = with pkgs.mpvScripts; [ scripts = with pkgs.mpvScripts; [
sponsorblock sponsorblock
paused mpris
uosc
]; ];
config = { config = {
profile = "gpu-hq"; profile = "gpu-hq";

View file

@ -0,0 +1,6 @@
_: {
programs.tealdeer = {
enable = true;
settings.updates.auto_update = true;
};
}

View file

@ -1,47 +0,0 @@
{pkgs, ...}: {
programs.vscode = {
enable = false;
extensions = with pkgs.vscode-extensions; [
vscodevim.vim
catppuccin.catppuccin-vsc
kamadorueda.alejandra
mkhl.direnv
hashicorp.terraform
jnoortheen.nix-ide
pkgs.outrun
];
userSettings = {
"nix.enableLanguageServer" = true;
"workbench.colorTheme" = "Outrun Night";
"editor.suggest.preview" = true;
"[nix]" = {
"editor.defaultFormatter" = "kamadorueda.alejandra";
"editor.formatOnPaste" = true;
"editor.formatOnSave" = true;
"editor.formatOnType" = false;
};
"files.eol" = "\n";
"alejandra.program" = "${pkgs.alejandra}/bin/alejandra";
"editor.fontFamily" = ''"Monaspace Krypton", "Font Awesome 6 Free", "Font Awesome 6 Brands"'';
"editor.fontLigatures" = true;
"terraform.experimentalFeatures.prefillRequiredFields" = true;
"terraform.experimentalFeatures.validateOnSave" = true;
"terraform.codelens.referenceCount" = true;
"go.alternateTools" = {
gopls = "${pkgs.gopls}/bin/gopls";
};
"vim.useSystemClipboard" = true;
go = {
inlayHints = {
assignVariableTypes = true;
compositeLiteralFields = true;
compositeLiteralTypes = true;
constantValues = true;
functionTypeParameters = true;
parameterNames = true;
rangeVariableTypes = true;
};
};
};
};
}

View file

@ -8,28 +8,27 @@
package = inputs.wezterm.outputs.packages.${pkgs.system}.default; package = inputs.wezterm.outputs.packages.${pkgs.system}.default;
extraConfig = '' extraConfig = ''
local wezterm = require 'wezterm'; local wezterm = require 'wezterm';
return { local config = {}
font = wezterm.font_with_fallback({ config.font = wezterm.font_with_fallback({
"Monaspace Krypton", "Monaspace Krypton",
-- <built-in>, BuiltIn
"JetBrains Mono", "JetBrains Mono",
-- /nix/store/mc76mhlam0rggcgx3z695025phl07pi1-noto-fonts-color-emoji-2.042/share/fonts/noto/NotoColorEmoji.ttf, FontConfig
-- Assumed to have Emoji Presentation
-- Pixel sizes: [128]
"Noto Color Emoji", "Noto Color Emoji",
-- <built-in>, BuiltIn
"Symbols Nerd Font Mono", "Symbols Nerd Font Mono",
})
}), config.window_padding = {
window_decorations = "TITLE | RESIZE", left = 8,
enable_wayland = false, right = 8,
warn_about_missing_glyphs = false, top = 8,
font_size = 12.0, bottom = 8,
check_for_updates = false,
enable_tab_bar = false
} }
config.use_fancy_tab_bar = true
config.tab_bar_at_bottom = true
config.hide_mouse_cursor_when_typing = false
config.window_decorations = "TITLE | RESIZE"
config.warn_about_missing_glyphs = false
config.font_size = 12.0
config.check_for_updates = false
return config
''; '';
}; };
} }

View file

@ -4,7 +4,7 @@
htop htop
btop btop
# disk usage # disk usage
duc-cli duc
# nix formatting # nix formatting
nixpkgs-fmt nixpkgs-fmt
# show type of files # show type of files

View file

@ -3,6 +3,7 @@
config, config,
lib, lib,
std, std,
inputs,
pkgs, pkgs,
... ...
}: let }: let
@ -119,7 +120,7 @@ in {
ZSH_AUTOSUGGEST_HIGHLIGHT_STYLE = "fg=3,bold"; ZSH_AUTOSUGGEST_HIGHLIGHT_STYLE = "fg=3,bold";
ZSH_AUTOSUGGEST_USE_ASYNC = 1; ZSH_AUTOSUGGEST_USE_ASYNC = 1;
}; };
plugins = with pkgs.zsh-plugins; (list.map (plugin: plugin.zshPlugin) [ plugins = with inputs.arcexprs.legacyPackages.${pkgs.system}.zsh-plugins; (list.map (plugin: plugin.zshPlugin) [
tab-title tab-title
vim-mode vim-mode
evil-registers evil-registers

21
modules/home/palette.nix Normal file
View file

@ -0,0 +1,21 @@
# Taken from: https://git.gay/olivia/fur/src/branch/main/modules/home/palette/default.nix
{
config,
pkgs,
lib,
...
}:
let
inherit (lib) mkOption types;
palette =
(pkgs.lib.importJSON (config.catppuccin.sources.palette + "/palette.json"))
.${config.catppuccin.flavor}.colors;
in
{
options.palette = mkOption { type = types.attrsOf types.raw; };
config = {
inherit palette;
};
}

View file

@ -1,249 +0,0 @@
{
lib,
config,
pkgs,
...
}: let
cfg = config.services.mautrix-slack;
dataDir = "/var/lib/mautrix-slack";
registrationFile = "${dataDir}/slack-registration.yaml";
settingsFile = "${dataDir}/config.yaml";
settingsFileUnsubstituted = settingsFormat.generate "mautrix-slack-config-unsubstituted.json" cfg.settings;
settingsFormat = pkgs.formats.json {};
appservicePort = 29335;
# to be used with a list of lib.mkIf values
optOneOf = lib.lists.findFirst (value: value.condition) (lib.mkIf false null);
mkDefaults = lib.mapAttrsRecursive (_n: v: lib.mkDefault v);
defaultConfig = {
homeserver.address = "http://localhost:8448";
appservice = {
hostname = "[::]";
port = appservicePort;
database.type = "sqlite3";
database.uri = "file:${dataDir}/mautrix-slack.db?_txlock=immediate";
id = "slack";
bot = {
username = "slackbot";
displayname = "Slack Bridge Bot";
};
as_token = "";
hs_token = "";
};
bridge = {
username_template = "slack_{{.}}";
displayname_template = "{{.RealName}} (S)";
bot_displayname_template = "{{.Name}} (bot)";
channel_name_template = "#{{.Name}}";
double_puppet_server_map = {};
login_shared_secret_map = {};
command_prefix = "!slack";
permissions."*" = "relay";
relay.enabled = true;
};
logging = {
min_level = "info";
writers = lib.singleton {
type = "stdout";
format = "pretty-colored";
time_format = " ";
};
};
};
in {
options.services.mautrix-slack = {
enable = lib.mkEnableOption "mautrix-slack, a Matrix-Signal puppeting bridge.";
settings = lib.mkOption {
apply = lib.recursiveUpdate defaultConfig;
inherit (settingsFormat) type;
default = defaultConfig;
description = ''
{file}`config.yaml` configuration as a Nix attribute set.
Configuration options should match those described in
[example-config.yaml](https://github.com/mautrix/slack/blob/master/example-config.yaml).
Secret tokens should be specified using {option}`environmentFile`
instead of this world-readable attribute set.
'';
example = {
appservice = {
database = {
type = "postgres";
uri = "postgresql:///mautrix_slack?host=/run/postgresql";
};
id = "slack";
ephemeral_events = false;
};
bridge = {
history_sync = {
request_full_sync = true;
};
private_chat_portal_meta = true;
mute_bridging = true;
encryption = {
allow = true;
default = true;
require = true;
};
provisioning = {
shared_secret = "disable";
};
permissions = {
"example.com" = "user";
};
};
};
};
environmentFile = lib.mkOption {
type = lib.types.nullOr lib.types.path;
default = null;
description = ''
File containing environment variables to be passed to the mautrix-slack service.
If an environment variable `MAUTRIX_SIGNAL_BRIDGE_LOGIN_SHARED_SECRET` is set,
then its value will be used in the configuration file for the option
`login_shared_secret_map` without leaking it to the store, using the configured
`homeserver.domain` as key.
See [here](https://github.com/mautrix/slack/blob/main/example-config.yaml)
for the documentation of `login_shared_secret_map`.
'';
};
serviceDependencies = lib.mkOption {
type = with lib.types; listOf str;
default =
(lib.optional config.services.matrix-synapse.enable config.services.matrix-synapse.serviceUnit)
++ (lib.optional config.services.matrix-conduit.enable "conduit.service");
defaultText = lib.literalExpression ''
(optional config.services.matrix-synapse.enable config.services.matrix-synapse.serviceUnit)
++ (optional config.services.matrix-conduit.enable "conduit.service")
'';
description = ''
List of systemd units to require and wait for when starting the application service.
'';
};
registerToSynapse = lib.mkOption {
type = lib.types.bool;
default = config.services.matrix-synapse.enable;
defaultText = lib.literalExpression ''
config.services.matrix-synapse.enable
'';
description = ''
Whether to add the bridge's app service registration file to
`services.matrix-synapse.settings.app_service_config_files`.
'';
};
};
config = lib.mkIf cfg.enable {
users.users.mautrix-slack = {
isSystemUser = true;
group = "mautrix-slack";
home = dataDir;
description = "Mautrix-Signal bridge user";
};
users.groups.mautrix-slack = {};
services.matrix-synapse = lib.mkIf cfg.registerToSynapse {
settings.app_service_config_files = [registrationFile];
};
systemd.services.matrix-synapse = lib.mkIf cfg.registerToSynapse {
serviceConfig.SupplementaryGroups = ["mautrix-slack"];
};
# Note: this is defined here to avoid the docs depending on `config`
services.mautrix-slack.settings.homeserver = optOneOf (with config.services; [
(lib.mkIf matrix-synapse.enable (mkDefaults {
domain = matrix-synapse.settings.server_name;
}))
(lib.mkIf matrix-conduit.enable (mkDefaults {
domain = matrix-conduit.settings.global.server_name;
address = "http://localhost:${toString matrix-conduit.settings.global.port}";
}))
]);
systemd.services.mautrix-slack = {
description = "mautrix-slack, a Matrix-Signal puppeting bridge.";
wantedBy = ["multi-user.target"];
wants = ["network-online.target"] ++ cfg.serviceDependencies;
after = ["network-online.target"] ++ cfg.serviceDependencies;
# ffmpeg is required for conversion of voice messages
path = [pkgs.ffmpeg-headless];
preStart = ''
# substitute the settings file by environment variables
# in this case read from EnvironmentFile
test -f '${settingsFile}' && rm -f '${settingsFile}'
old_umask=$(umask)
umask 0177
${pkgs.envsubst}/bin/envsubst \
-o '${settingsFile}' \
-i '${settingsFileUnsubstituted}'
umask $old_umask
# generate the appservice's registration file if absent
if [ ! -f '${registrationFile}' ]; then
${pkgs.mautrix-slack}/bin/mautrix-slack \
--generate-registration \
--config='${settingsFile}' \
--registration='${registrationFile}'
fi
chmod 640 ${registrationFile}
umask 0177
# 1. Overwrite registration tokens in config
# 2. If environment variable MAUTRIX_SIGNAL_BRIDGE_LOGIN_SHARED_SECRET
# is set, set it as the login shared secret value for the configured
# homeserver domain.
${pkgs.yq}/bin/yq -s '.[0].appservice.as_token = .[1].as_token
| .[0].appservice.hs_token = .[1].hs_token
| .[0]
| if env.MAUTRIX_SIGNAL_BRIDGE_LOGIN_SHARED_SECRET then .bridge.login_shared_secret_map.[.homeserver.domain] = env.MAUTRIX_SIGNAL_BRIDGE_LOGIN_SHARED_SECRET else . end' \
'${settingsFile}' '${registrationFile}' > '${settingsFile}.tmp'
mv '${settingsFile}.tmp' '${settingsFile}'
umask $old_umask
'';
serviceConfig = {
User = "mautrix-slack";
Group = "mautrix-slack";
EnvironmentFile = cfg.environmentFile;
StateDirectory = baseNameOf dataDir;
WorkingDirectory = dataDir;
ExecStart = ''
${pkgs.mautrix-slack}/bin/mautrix-slack \
--config='${settingsFile}' \
--registration='${registrationFile}'
'';
LockPersonality = true;
MemoryDenyWriteExecute = true;
NoNewPrivileges = true;
PrivateDevices = true;
PrivateTmp = true;
PrivateUsers = true;
ProtectClock = true;
ProtectControlGroups = true;
ProtectHome = true;
ProtectHostname = true;
ProtectKernelLogs = true;
ProtectKernelModules = true;
ProtectKernelTunables = true;
ProtectSystem = "strict";
Restart = "on-failure";
RestartSec = "30s";
RestrictRealtime = true;
RestrictSUIDSGID = true;
SystemCallArchitectures = "native";
SystemCallErrorNumber = "EPERM";
SystemCallFilter = ["@system-service"];
Type = "simple";
UMask = 0027;
};
restartTriggers = [settingsFileUnsubstituted];
};
};
meta.maintainers = with lib.maintainers; [kittywitch];
}

View file

@ -1,9 +0,0 @@
{lib, ...}: let
inherit (lib.types) listOf path;
inherit (lib.options) mkOption;
in {
options.scalpels = mkOption {
type = listOf path;
default = [];
};
}

View file

@ -107,17 +107,7 @@ in {
} }
// args); // args);
in in
args: let args: sys args;
nixos = sys args;
in
nixos.extendModules {
modules =
nixos.config.scalpels
++ [
inputs.scalpel.nixosModules.scalpel
];
specialArgs = {prev = nixos;};
};
home = args: let home = args: let
renamedArgs = set.rename "specialArgs" "extraSpecialArgs" args; renamedArgs = set.rename "specialArgs" "extraSpecialArgs" args;
renamedArgsWithPkgs = renamedArgsWithPkgs =

6
nixos/common/nh.nix Normal file
View file

@ -0,0 +1,6 @@
{ pkgs, inputs, ... }: {
programs.nh = {
enable = true;
package = inputs.nh.packages.${pkgs.system}.nh;
};
}

View file

@ -1,8 +1,4 @@
{inputs, pkgs, ...}: { { pkgs, ...}: {
programs.nh = {
enable = true;
package = inputs.nh.packages.${pkgs.system}.nh;
};
nix = { nix = {
gc = { gc = {
automatic = true; automatic = true;
@ -14,5 +10,9 @@
"deploy" "deploy"
]; ];
}; };
package = pkgs.lix;
};
system = {
rebuild.enableNg = true;
}; };
} }

View file

@ -0,0 +1,11 @@
_: {
services.nixos-cli = {
enable = true;
config = {
use_nvd = true;
apply = {
use_nom = true;
};
};
};
}

View file

@ -0,0 +1,11 @@
{pkgs, ...}: {
services.greetd = {
enable = true;
settings = {
default_session = {
command = "${pkgs.greetd.tuigreet}/bin/tuigreet --time --cmd niri-session";
user = "greeter";
};
};
};
}

View file

@ -0,0 +1,6 @@
{ pkgs, ... }: {
programs.niri = {
enable = true;
package = pkgs.niri-unstable;
};
}

View file

@ -1,13 +1,6 @@
_: { _: {
boot = { boot = {
plymouth = {
enable = true;
};
consoleLogLevel = 0;
kernelParams = ["quiet"];
initrd = { initrd = {
verbose = false;
systemd.enable = true;
availableKernelModules = ["nvme" "xhci_pci" "thunderbolt" "usb_storage" "sd_mod"]; availableKernelModules = ["nvme" "xhci_pci" "thunderbolt" "usb_storage" "sd_mod"];
}; };
}; };

View file

@ -0,0 +1,14 @@
_: {
boot = {
plymouth = {
enable = true;
};
consoleLogLevel = 0;
kernelParams = ["quiet"];
initrd = {
verbose = false;
systemd.enable = true;
};
};
catppuccin.plymouth.enable = true;
}

View file

@ -1,28 +0,0 @@
{
config,
pkgs,
...
}: {
sops.secrets.synapse-cleanup-environment = {
sopsFile = ./secrets.yaml;
};
systemd = {
services.synapse-cleanup = {
restartIfChanged = false;
serviceConfig = {
Type = "exec";
User = "root";
EnvironmentFile = config.sops.secrets.synapse-cleanup-environment.path;
ExecStart = "${pkgs.synapse-cleanup}/bin/synapse-cleanup";
};
};
timers.synapse-cleanup = {
timerConfig = {
OnCalendar = "weekly";
Persistent = true;
Unit = "synapse-cleanup.service";
};
wantedBy = ["timers.target"];
};
};
}

View file

@ -1,14 +0,0 @@
_: {
services.mx-puppet-discord = {
#inherit (config.services.matrix-synapse) enable;
settings = {
bridge = {
bindAddress = "localhost";
domain = "kittywit.ch";
homeserverUrl = "https://yukari.gensokyo.zone";
};
provisioning.whitelist = ["@.*:kittywit.ch"];
relay.whitelist = ["@.*:kittywit.ch"];
};
};
}

View file

@ -1,23 +0,0 @@
{config, ...}: let
fqdn = "${config.networking.hostName}.inskip.me";
in {
services.nginx = {
virtualHosts = {
"${fqdn}" = {
enableACME = true;
forceSSL = true;
locations = {
"/".extraConfig = ''
return 404;
'';
"/_matrix".proxyPass = "http://[::1]:8008";
"/_synapse".proxyPass = "http://[::1]:8008";
};
extraConfig = ''
http2_max_requests 100000;
keepalive_requests 100000;
'';
};
};
};
}

View file

@ -1,13 +0,0 @@
_: {
services.postgresql = {
ensureUsers = [
{
name = "matrix-synapse";
ensureDBOwnership = true;
}
];
ensureDatabases = [
"matrix-synapse"
];
};
}

View file

@ -1,34 +0,0 @@
{config, ...}: {
sops.secrets.restic-password-file = {
sopsFile = ./restic.yaml;
};
services.restic.backups = {
"${config.networking.hostName}-matrix" = {
paths = [
"/var/lib/matrix-synapse"
"/var/lib/mx-puppet-discord"
"/var/lib/mautrix-whatsapp"
"/var/lib/mautrix-signal"
"/var/lib/mautrix-telegram"
"/var/lib/mautrix-slack"
];
exclude = [
];
extraOptions = [
"sftp.command='ssh u401227@u401227.your-storagebox.de -i /home/kat/.ssh/id_ed25519 -s sftp'"
];
pruneOpts = [
"--keep-daily 7"
"--keep-weekly 2"
"--keep-monthly 6"
];
initialize = true;
passwordFile = config.sops.secrets.restic-password-file.path;
repository = "sftp:u401227@u401227.your-storagebox.de:/restic/yukari/matrix";
timerConfig = {
OnCalendar = "00:05";
RandomizedDelaySec = "5h";
};
};
};
}

View file

@ -1,110 +0,0 @@
restic-password-file: ENC[AES256_GCM,data:0U96CkrV8VyEvg0nm+ZfdWMo2TjxDfRF6YBFNe8jfps=,iv:TEad//eKY/tCNMLCs6EZ+gn+7cxz7nGB+y1a4Dv+Wd4=,tag:s/E0QlE812TwgC6gRKlWbA==,type:str]
sops:
shamir_threshold: 1
age:
- recipient: age1n4kdchmkk3rfkaknxhveqr2ftprdpgwckutt23y6u8639lazzuks77tgav
enc: |
-----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBqSUdjN0ZudHpPTk5YbmFj
LzhLOEs1dlg1K3hzU01pWlpXSENLb1NxRWpRCmdNZHJ4STlXWFh5SGQvWTkremxq
TFg4bUo5Ujd2c3hTTW94aXlCaGY2bEkKLS0tIEF0NmVPTjFqa0owWE5TSjI0L1Rj
UkViVHd4OVhUeWtZbHIwUnpvT2pYWEEKCAz08Wi4sTj8Xn91mDRTPRspyjuqgM+P
CDoY34wBy1f6JrtqEhpb0ggbauUQEoKPL9AxMlG+ONOhTXww7ciJOA==
-----END AGE ENCRYPTED FILE-----
- recipient: age1cnu37d5fqyahh9vvc4hj6z6k8ur9ksuefln7sr6g3emmn927eutqxdawuh
enc: |
-----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBHeE02SFd2dVJkSlBuSllT
ZDBkSlRjdC9LSWRiTEljRldBU0ovUlMyNUdJCjdDa0FldlBxMys5TzRzcXcrT3Nr
a3RJekwzK3FBN3QrblZIQlpUTG41QlEKLS0tIE1FV2Y4WEYrUFBmZHpnSGZvalJD
VlpYTXBobllGeXFTZWRjTzVJR0l1TmcKP3dZgC6mKayktk8q2HGYJGU8JuUU4sIu
8mhyrRYNbNewTMqI2lo8EI3uqZ36WMNeYSm8MtImE97bSKARLgMWXw==
-----END AGE ENCRYPTED FILE-----
- recipient: age1a0m73qr8hhuz8xemv4vymf4wmpghm2hst8wgrn3pn65ext5mf4ksk0vsdm
enc: |
-----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBmcHBDdzB5QzlXaGtqNEh6
VW5UU2ZjcG1KTmhKM1lHUzBhY1JFRFc3WlVzCktGT3dnckdlVkhEWkdsMlpISEY2
THkrT0tLV3ZFbkQzZlErSXI5bnVqM1EKLS0tIEVpcnVkRkU2VCtGK1JjMG8rS0JC
R0xiQ25Nem5DM0Q2UDNOMmdkL3VEdGcKWa+imjxsLBBT9dk1Rlm0/ahBKCSYoh2V
K9k3Y3bQ3TPxq46WeVu3C+thgHSh5wpPGnWhiA7yHe7fqcMm9AGvxA==
-----END AGE ENCRYPTED FILE-----
- recipient: age18hpxz0ghvswv9k30cle73prvnzrsuczqh87jjdk9fl50j3ddndmq9xae0n
enc: |
-----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSAxbUdWdnV6VERoamlMbk5H
MGV5MzY2a2RLTUMzYXkwdkhuWitUeFIrREhrCmFYN0p2WjV1NnBmUUpxdDVUYXQx
bGIyZ0hwNFhmVUdDdkpGbVNESVlmVXMKLS0tIDVEdVMvYzJmQzJKOUNmZkxVdGVI
Q1lRc3F1L0lYeGtvSU5QY1R2cXdIblkKL3FNXmanvzzCi4Jdd1dPSggSmqgwOu59
aYRibZIBbhfRYfI6J3/CmNIuMsaELwXOx6HAbh3qgB97+dk2q2Otkg==
-----END AGE ENCRYPTED FILE-----
- recipient: age1xgy03g3vjydsxcl0qpdgm8rahjcjq95ucxfwlgr22zwjx3p7jf2s9jk6u5
enc: |
-----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBQOFFLTkNsSk5WTk5OWGVr
U3l0bnZSNExBN05RZzV3TnZQM3VoWG8raVZBCnp5cU9yU25yR2poWjhiRHNKYXpC
M2hXVkltUlBrMUo5ZGxJTng4Um95LzgKLS0tIGRBUk0yc2duQklNNlpMOUJtYThU
aWhuVFpSWENQMFR6NlJnKzFDWGM3cDQKhtnMKeUVi22XQFIwpfpT+iiqQhTuRIuI
e0hsOi4POMG+/YfAbEmBWB0f5o4GjowjkxttSZ91K86gsI67/Hz2nw==
-----END AGE ENCRYPTED FILE-----
- recipient: age1fv5dafs4n3r5n83qm2hfz7xmnflsz0xf9r3saralrptpgf8mvuxq4t8k3u
enc: |
-----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSByUXlaQitUTzMvMDRTcHBG
b05xWnlhT3hUWVFVVnBhb2pIb0RnM0FZeUMwCitNMlpMWHZqUmVkOEVoZDM2VXV5
eTNFSHkyb01BWmVpOW53dEhCdXhtem8KLS0tIDJwU1A2SDdEQ3h4RWhDRjlBbnBL
V0k0WU1SNFJZR1paN29WSkF3NTBhbkEK3SYaZ3cwPBBlwujHoKqVWfSnQvOAz08r
PWSp5eS4X4dy3Jt+c1XVSixJ3FpDMYvOpzhvs3XQKCKpMqMAD3wfCQ==
-----END AGE ENCRYPTED FILE-----
- recipient: age120530yclr75k6nrzp6k5jjftj8j4q9v3533guupzk4ct86mjxszqg9e5t5
enc: |
-----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSA5RXBpdmtmZk55bzJTUXE1
eE9WL2pMQURpYmZyQzZEdG05SUgvbGI4M1VjCjN2QVhCbkF4WEMwbjA1ZnNkT3lL
NFI3Y09Qd2I3eEpsMWtaRUc1U1pYZ2cKLS0tIGdyK1FSWEh6MnljNUtFSFNndEZl
M1doTmFJL1cxTWhCeVFsS1l2b3FnblUKLEHSPZLSFfo0qtZHyZQ08TLuPeWsB7MO
DgqAGo9FssG8RnusRIJ4Uyc0PWLTNb9gWTgJK30PQZuZzJFur/BbCQ==
-----END AGE ENCRYPTED FILE-----
- recipient: age1c4atxfp05u7zm875s6q8p82ve96rqqpq9smktxlur8pk2yc3qvgql46dp9
enc: |
-----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSB2VExXemNpbnhsUFNwdGdz
K0pYajJ2VFlhUHpVWEN4NDlibjlrRDdJWWdFCjJyazN0eS9EQUtsNURFZmdxb3hj
T0l2Q0h6a3ZuYzBUZ1YyOU9yQTRzM0EKLS0tIG5DaVlNMnUvY1VzeHJRK0ZsMjRC
S21QTEdveTh1ZTdXZVcya0VXMFhYU28KI+ArhGxhXvo6NsdHx3ErYsZyZqLZbZY7
fbJeqzA2Y2C3YEt760MF7aAL8XIvebVrUhMyApPas3YJg88EScJA9w==
-----END AGE ENCRYPTED FILE-----
- recipient: age1rjldv3fn3q686647exmcukthr32gmp6s3axs0lhyenvru9ajp9rs24ukvz
enc: |
-----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBMbnpPcFFsYWFQbjdPcnkw
dDM4SUtES3lsRVJPd1ltS1gzQ1ZJZzMzV1F3CmRvVFlqelc2cHZDbTdQWUtlazBF
cFhUYmV2M29ld2tHZzMvdnowbUJvZGsKLS0tIFlXc0ZXTS9CWjBoeHRmYVJoT21E
R1ljK29kbXJLNUdZVkJzV29aS3dzaWMK6UtPqbLqyZHKmLUsZKHVWMCQ/s0iqUKI
c89Y3oWwGzreZxA8yLVpXbibXHjc5h1NatAIUe/Yyj/kS4dldeiTfA==
-----END AGE ENCRYPTED FILE-----
lastmodified: "2024-04-21T18:13:24Z"
mac: ENC[AES256_GCM,data:eDKIeCDMIKCrfypT09VUWbvUzSWze8xE9l3on6vgYOcxAnIFDlF7UnlZP/G+rU2+grxEluZV+ApUwC71LuunTNHHvEjudxp6yGHV7OrYUu+i5PuTzL0KNpt+cLr5pNYGiYWE2J4RpWmilbthVnLLJDuHlKqSAWjwdNIrEgOokR4=,iv:Yqu28Wjut7scV/iDMQVMffqdduHDbUetWvu3CVjVz3I=,tag:gggRhdXvVXxfGS7/Wp5jwg==,type:str]
pgp:
- created_at: "2025-06-27T20:11:12Z"
enc: |-
-----BEGIN PGP MESSAGE-----
hQIMA82M54yws73UARAAh40VwHS5hFOsaKUDwWWUoVTVTUHteHglwPR7+o3U41Zr
OjpGc1vuUlvE3p0FdYcGpsXUaPLpz990ZCaCqx5YnBLqbaVtP7cC1gNVSgob9R1k
BaPbYYs7sKL+RbAo3GTAlykWfonCzeeVS09EssTAIrSI4zUgb7b1RkbdnA55Icj/
Y/Dvq6BkZU7pVkaoa4faf7I7xgguJhh5nhzNJof8U7IYOsffTzWpdayc7tSOTDcI
PTllDgshrGS+T5THITG+6vghDlhQRmVgrjYSKTbybEIQv29LwnPAcfU2DqDF2W7v
DpuFI0H7I41AitrREB2MKWfwI29U2ul2nSbTkp9N5KYdL09jPL6P8ubAY3L4zOqm
ehWrLlA+vmy5CWgpYDL8H4YhRMFSjyGsdNqnxpGwcAZOyad2oPumLxIwRpplr77V
rRa17bfm19qez7+IGI7Z2S8JQZGVf62Z5Yl81vAqsQJ+nU1YZeskaTMWFjMV5QNz
X8RNU+FPrOVVjlvRWN0PmrcjnukjgkD2Z/2kzeaIaXN7qtJkpCnpIFkgwaDTQOSA
U0ZJA5pmP7jrPYtYGpXfue0GcXz4v3pMrukQMeBnCDH5infPHMCDq9p5rjjBglKf
Pso+aDjTirE8ur01xi/vYLqiYCXK9Uz1z/aQ8IG7W6AaRpkvUE05QRNFvuvBmHfS
XgHXxsX5+oELoCMCfSB+gjQqDOTPpNnNKQLO/7qvaHr3GnKzV47pJdtmrbAY+vgV
s6ehWSsj60p/iPBFLQKtyKmLWIXEF+N04XAoq7y6EpR1m7Ft34FHz68Eq8fXJq4=
=hTFl
-----END PGP MESSAGE-----
fp: CD8CE78CB0B3BDD4
unencrypted_suffix: _unencrypted
version: 3.8.1

View file

@ -1,21 +0,0 @@
{
lib,
config,
prev,
...
}: let
inherit (lib.modules) mkForce;
start = prev.config.systemd.services.matrix-synapse.serviceConfig.ExecStart;
synapse_cfgfile = builtins.head (builtins.match "^.*--config-path ([^\ ]*).*$" "${start}");
in {
systemd.services.matrix-synapse.serviceConfig.ExecStart = mkForce (
builtins.replaceStrings ["${synapse_cfgfile}"] ["${config.scalpel.trafos."homeserver.yaml".destination} "] "${start}"
);
scalpel.trafos."homeserver.yaml" = {
source = synapse_cfgfile;
matchers."MATRIX_SHARED_REGISTRATION_SECRET".secret = config.sops.secrets.matrix_shared_registration_secret.path;
owner = "matrix-synapse";
group = "matrix-synapse";
mode = "0440";
};
}

View file

@ -1,10 +0,0 @@
_: {
sops.secrets.matrix_shared_registration_secret = {
format = "yaml";
sopsFile = ./secrets.yaml;
};
scalpels = [
./scalpel.nix
];
}

View file

@ -1,112 +0,0 @@
matrix_shared_registration_secret: ENC[AES256_GCM,data:DsCqfbS2yxN7nVRevcjpfO63jBUsyQHfEfbpZpD3cBtPf+JuZ8TFPBNNQwx2NYdyty60INdr4w==,iv:pSf6VDS9bqZIq8ZqOW0v4siRbDp9EEdw7TtSSjjrC6A=,tag:V61OqmdsNzczOzf+2Y6LSA==,type:str]
api_id: ENC[AES256_GCM,data:z1FqOKDSG1uo4BYgt2Ct9cUUy/daSgMNCnOHsdhG0ocw7eNI,iv:2cpOFO0Fcv/Y2xj/5UErbZ9qiLtn0QUWUg12Z9z/Ug4=,tag:cYEgrUM8GJ+uGNXKz4GpdQ==,type:str]
synapse-cleanup-environment: ENC[AES256_GCM,data:T9c2bcdoKmB3l4G07x2FKLY8YCPpmd5efRgO/hJQBM9fKZrz1t/0VsPRy5SnjKkGm5Xib2u/MOcBTrtU4mkbO+5/ZrYFRjJNu/sLAeXOD+3MkA/uL0GXR6VpSaGrqv9F6ofaUq5zBcFU7EQXfLWq3fpj3RPA14JhavYVNta01pnUbu4pMhFmnRMYBsZhgTFoDJVbuk1VW3w+I2Y2Sg4t4Kzmq8MLukHzqRtkSNSelevX1wJNfyVo+IwiXhtCLvyjsaQ31WzlSqiH+sTNU+I62PP1ORXnFVrwBgH9qqo+WMdZ,iv:0EyveHiZyeDqFcgaHTF3hTmmUUHLTo4AEbXBw/VMdTI=,tag:iboMxPRt0Ib0vJF51rQQkQ==,type:str]
sops:
shamir_threshold: 1
age:
- recipient: age1n4kdchmkk3rfkaknxhveqr2ftprdpgwckutt23y6u8639lazzuks77tgav
enc: |
-----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSB0bktVczBLaDFiMVFNTGI5
ME91SUFZQW5YR1l5YVE1OVhiWXowQU02ZFNNClFPeFdtc3B5Y21uMnVCSmRWTzVO
MkVMVXdCYThDdGdHa00yNWdIbnU3c0kKLS0tIG9uVzV0dldvZ2EvNnNVR25IT0dZ
RU5vZFdneE9xeW9nUUNwekxPRDFxYTgKIPeUyl+WKR5XNuh5i0ujABUsjYG7KKj6
PD1cTheOiWOgJp1jVMijgHpA7sltZBjVPBlMdaGooVrkzf8O/GHpLQ==
-----END AGE ENCRYPTED FILE-----
- recipient: age1cnu37d5fqyahh9vvc4hj6z6k8ur9ksuefln7sr6g3emmn927eutqxdawuh
enc: |
-----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBQSkRuY3JBeE9DNFM2MUJG
bkoyK1paUU50M1F3U0dIK1kxd2pvTmFnV0hJCkwyWWFubkVsVjluWCtZcGYrMDd5
SHhYaDRobUV0RTFuYXlXUnB3THIwNHcKLS0tIFFMRnY4RVFXRnc4UTUwWDZKZ1d0
ZlR0M1B2by9BYzIwcnRKL2NTcEwveWMKRFNDK6Aeg+MHEaH3OweJD62M5tGNQF33
45Yr19WqPwzI1HW50Em9f5OB7Zjgbs/kXCtILPwRv3nv+ooBujax5A==
-----END AGE ENCRYPTED FILE-----
- recipient: age1a0m73qr8hhuz8xemv4vymf4wmpghm2hst8wgrn3pn65ext5mf4ksk0vsdm
enc: |
-----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSAyYTI4MTBYTDVCRGc1RHZy
MnZUZU9NNGxBY2tzSFJrVFNiVlN1MldyZUVzCklpMmRWM1hwL2pBLzNBY3hIUGZv
ZVd3ZUF4ai9jYTBCOHNTWGVxVCtMamMKLS0tIExtVHlSVVg0UDJMUTU3dUpoRUFQ
NTdzaUo3M0ltbjFja0ZJYUNrQTBvNVEKgtNLw85qaiiXnw7Cv+J/P9Q8SsaGhfFS
Ukya1d/tyVl0umCL2eqPv4bDkTtTC5lPQpmvXtmoUC3rUTGCxjVujg==
-----END AGE ENCRYPTED FILE-----
- recipient: age18hpxz0ghvswv9k30cle73prvnzrsuczqh87jjdk9fl50j3ddndmq9xae0n
enc: |
-----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBNTlFiOTFjd0dlVDhIMXhD
Ni9SUmxXOTdqY2NkNlR1UUpyd1RQRDVxK1VRCmszcmdhRU8rRDc3YnBnRWlvOU8y
bTg4emd4VlAzLzk2TE1XTUswL1dkeDgKLS0tIC9BYlRUY3BGU1phNlVXUWVTLzY1
c25JRDc2c2wvdmxlMHJQRjBjVmhsYm8KUM6qLbIpq1lD19WeoR4rROADCtWyM5e1
6X7sl+eO7wVmrgt5KrHBkl6Z44mMajgy4pRRcF/mMBH6mIg3esQISA==
-----END AGE ENCRYPTED FILE-----
- recipient: age1xgy03g3vjydsxcl0qpdgm8rahjcjq95ucxfwlgr22zwjx3p7jf2s9jk6u5
enc: |
-----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBrZmpFUzJvKzg3VXlyaDJV
d2xXVXR4eHFEcWNpRjJKdkIrMU9JbHc4S2cwCjNBd3QvdTRzektFSUZ1TWlaUmYx
Q2hVRUlOd1VQZFhpQm9kUzZJUm9qeHcKLS0tIEVML0RlVlQ0UFBXK3FsWTdSMHVl
Smh4LzRuZ1IyZ1IvTjN5U2pETlVPazgKuTgp0P4BYDDprsfhCBSzsrPTRt0fbFMy
b5Hg/5mjDsQZVCy/+CjruUzFr7luVvhWNIEcMgRNP7rYj6rsykIUrA==
-----END AGE ENCRYPTED FILE-----
- recipient: age1fv5dafs4n3r5n83qm2hfz7xmnflsz0xf9r3saralrptpgf8mvuxq4t8k3u
enc: |
-----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBMRncwVWF4YzFrYzBhK1kw
ajlFMDg0SjJ6YVJEc2F6NEIwLzhJa0t0bjFnCmpJbjZ6MTB6Wm9JTFAvY09vMEF3
L003SEhRZGpTYmJOSFhVMkpoMXdBRnMKLS0tICthWmE0U01vWCtzblpsOW9iTlo2
SEthSG91QzkxdU10TTkxNFJidis5bU0KzMYwivPNr9d9zoFl61xrcQlFIiM7T9/1
WP5Bh3xWEtgYZK5/j99DACFVWdFezAAndt7weNnwJ/jpwa1On2Dc6A==
-----END AGE ENCRYPTED FILE-----
- recipient: age120530yclr75k6nrzp6k5jjftj8j4q9v3533guupzk4ct86mjxszqg9e5t5
enc: |
-----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSB2eHVWMGpNWU1pcmJPdTVH
bUdWTURjVkQ5bzZlWVdkN3hrY2dFUWNVQ1JBCjRVLzFsL2VEdkFSTDZRaG5ZOXZa
bHI4SUorRWloanVVYktHK21EYWZLOFkKLS0tIHU5TThjRmhIRmQydmFrMmNmTHRa
RVNHNW56dlJMQ1VjMlYzRGNGZHBpUHMKeAmRPdwW24RHD/1vbEAJNoK27TlNJ7vB
AnRrsomimk3gEXpuSWu1pm5X0w7a7R6w9ge6/DKThCgJo+dunMf3QQ==
-----END AGE ENCRYPTED FILE-----
- recipient: age1c4atxfp05u7zm875s6q8p82ve96rqqpq9smktxlur8pk2yc3qvgql46dp9
enc: |
-----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBLWjlhQ1Q2OUZXamZkQWV6
dWRnRURHWjFkbm1iZ2FqSWJ3REwyVE1zK0NrCmJld1pYaTdoRCtENUVMdU5wWDNW
TG1zT0I3WHQ5NnE1Q1hOL0h0YUo2WUUKLS0tIDNuM0gzNDlTbmIvNmRlSVJtQW1Q
NjhhejI0SE5EQkFva3FIQ3pBVmhwV2MK7DsevOHyClvaJaiwMrF4pbp51DkEMc7O
vPX4oPjoFGn4GmxMY1L5kdZHxuMPrtLMVid1NsqlE/tcTzMKa/CGqg==
-----END AGE ENCRYPTED FILE-----
- recipient: age1rjldv3fn3q686647exmcukthr32gmp6s3axs0lhyenvru9ajp9rs24ukvz
enc: |
-----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBOZUNnc3hVdE9rR2tieUF4
b05CVmo0N2JyMGJTbmRTdnpHclhTdENheXlnCnVtaUx5Tkg1OHFqMkQweVNKYVhm
M29kVWR0Q0daczV4b3RnK2NWem40ejgKLS0tIHVBSFNWSzQxUmFKSUhFYkI2alNR
YVIybS9OektWOFZ5S1I4eVQ0QStwWTAK3UXgekEDKsQ+JQmzE/Y1zuWjnVBoNzKn
tjcGnSPAMcZzzydZoch5/+dysIJZji69xP071SJX+8AFkcL84h9p4Q==
-----END AGE ENCRYPTED FILE-----
lastmodified: "2024-10-10T00:10:05Z"
mac: ENC[AES256_GCM,data:FT+6/Cexyf+B95gjQmsQ9Ri40aXA6/UnCZgXhxNDNp1zj5m6J065R+IbdrLoLDjG9FU2MplEg1dZNksvcXlSi34Sbzmmf3OMGm73Yzsr6/KhCoU9nGfJmSpXJXeOBS6ahAIobGfbjOzWN4ljy4EmDC/UUSeVKcs4sGYQ207kVcs=,iv:tf1GvJA6q7DztRA3LjlQUH16GitiuyqUhHiukG59ydc=,tag:bg7Sv5581bYeQ/NdO2XxIw==,type:str]
pgp:
- created_at: "2025-06-27T20:11:14Z"
enc: |-
-----BEGIN PGP MESSAGE-----
hQIMA82M54yws73UARAAq57K976ckbNacCd/FPSEGK3hGf16ZNxYhDQzrc7SGAXn
QqnWobtjPZqeWNVOfvpfhHBpc/vZLWlvjK0LE9qt9jS7lsxH5NZuGduY0A86mtMH
P2kqpz1/dbARlB05et6zDBwmSDk8dk3IKPkMCzJ0rcSoLWWCqGx1URoKFjWqvD5O
/w9VcaK5lt85uzG7ka3L4D3Bu3e/Wi8dgUzRrzCRZJo8QqGW8mRZ6UTwXV9suRx/
oSquuQkghYJBTB3qXjD3H7QHqmsEfkROiUIONXXzqzatYsdaBvh0hgwxrWiwnBhb
nA3Kd2YefZElIBUJXZ9NkI3F1DOIPNaMCB6bsZHZ5l0G5Km3sxpAcaELTr8oAfTO
Y4Ru1LN3T6vit5Ld3UsqeEwrb40v2mhbf+xMkwux8KhaerCgruQrEQuc0b2t+BdJ
LQFbFFOthV+tUccD90lejG4MV1JXG1AYZKmeLTwXbUymNzB0VdyG4upLdyNEHpvV
2xYGYJdRdUcCh43BkL4Fapu0QjAMCqcyhGE73bmDNhovSc7Ux3V++kWI/bqOICR3
NFSmgsrTqInQ59thhnFgn2n67AnW9KJbiKPziYSXpbEPIExVMp0AgxzQWrfGxVcH
1h01fx99UoRLFLOCNTCTNRI6GxttlD+QCrBOibkKgA9r9cY3SBwk+IIB+FXNMTHS
XgFOiN7axkvUYKybRsVCMQ6grdijKJ0MckRdlDl3WiTSwj8SEYXkFIycDQ+13Ayd
RgnVwnOAYer0mSx4Ac64c5jLfCrDBUq5xl+J1g/fjlUooOlsx3oXO2UaXmClvsM=
=Wmup
-----END PGP MESSAGE-----
fp: CD8CE78CB0B3BDD4
unencrypted_suffix: _unencrypted
version: 3.9.1

View file

@ -1,42 +0,0 @@
{config, ...}: {
sops.secrets.mautrix-signal-environment = {
sopsFile = ./signal.yaml;
};
services.mautrix-signal = {
#inherit (config.services.matrix-synapse) enable;
environmentFile = config.sops.secrets.mautrix-signal-environment.path;
settings = {
homeserver = {
domain = "kittywit.ch";
address = "https://yukari.gensokyo.zone";
software = "standard";
};
appservice = {
port = 9048;
ephemeral_events = false;
};
signal = {
};
bridge = {
history_sync = {
request_full_sync = true;
};
private_chat_portal_meta = true;
mute_bridging = true;
encryption = {
allow = true;
default = true;
require = true;
};
provisioning = {
shared_secret = "disable";
};
permissions = {
"kittywit.ch" = "user";
"@kat:kittywit.ch" = "admin";
"@signal:kittywit.ch" = "admin";
};
};
};
};
}

View file

@ -1,110 +0,0 @@
mautrix-signal-environment: ENC[AES256_GCM,data:BpCzruK8S1NBdszZaSalPKMkhSk+vpQKnLM+0USjo2j4awcjNnqsDSiV3rSsB3Zary3x456ZX5WCfYVCmFy6UmGP9LTw7OV7Y0nGpAsb6oKbAEMDcft4AbrNh4x2Z0Xc9fAlBE5UY4kmQW1HWTn8pxyV0+uwT7voNffzOujxss3YW6u6y7TlBZh4Y3uscR4Dm4yt9RBiAu1Tu8FJOPJW2VFQ16drQiQV4xfFusr8HIv1KiIJuNiyK+RWOPQGckiKz+aLAqdXShs=,iv:YP9Aw74CKfUsi/hSu3t+K7HHoEF6rXqpkqvr179l6sE=,tag:DDZxGvRiMgNYRU8C3wK60w==,type:str]
sops:
shamir_threshold: 1
age:
- recipient: age1n4kdchmkk3rfkaknxhveqr2ftprdpgwckutt23y6u8639lazzuks77tgav
enc: |
-----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBHd0J5SnVwRU1aVlVmL21m
T2FoQkxsRW5vWGVpT1NBNGdBTzhDcXYxRGpvCk5rUG52SDlHY09vY0cwVVdFOUNI
TGVleE5IZDY5TE9MaVNPQ1h5MHVReUkKLS0tIDNHQlc1Z0ZjM3kyOVRONURnRDVI
MXg2MlFFS1dxVzdyNDg0d3Fya21sZE0KOBKwtPJ/MEgS8u42WQJSllkaLLf+u5GG
u0EhAwbM0Ad2GKmEgOFzg8EWYfBulCap3sQ45Ud2LqKPgasNM88x4w==
-----END AGE ENCRYPTED FILE-----
- recipient: age1cnu37d5fqyahh9vvc4hj6z6k8ur9ksuefln7sr6g3emmn927eutqxdawuh
enc: |
-----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBGbUZNWUR1cCtqNzJhS0Fu
ODJlL2JjSDlNdUxNbHpQeFphWFZMSWNWUzAwCmxtSDU5SHZCdGJSU3RyQzFXaDEz
aEZKM2pWSDYxczk5TGx5djgxSjFZcjgKLS0tIGVQcEd1b0hmSVAyL05TOEhvZHR2
R3Y5ZlI5OXhVZU5qRzhJZWxNaEZkL28KTc4Egi4uPem84ModTk/Gwf0syW2D1GBa
K48U0uyxgAkvkbjDzy/FvQSD9swnsI4HeiNh1rT4+mumlxO29dgg4A==
-----END AGE ENCRYPTED FILE-----
- recipient: age1a0m73qr8hhuz8xemv4vymf4wmpghm2hst8wgrn3pn65ext5mf4ksk0vsdm
enc: |
-----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSAzcUk1RURvejZ0WDNXekhj
TVBaazltRjlDa3QwVnpJZGt6Z3JhNDVjSXpJCnJzWVJSYXYrMk5JMjVWS2VXSHZU
TSs4dSsvMjJNUWNCdVl2Um1QTjAvdFUKLS0tIC9HTjRJNjhSS2xrR2hrNmJ0OUFm
eHBQZjdTK3JsemlNeHMvVy9PaGYrek0KOWfJ+VufB7bOTR55YfCgtlYtTxZSLQeh
x3DRyuFBr8UH+PuQfo2zsoLe+ouJpZ7np/rl6uZQE5DB06pFkd6oVw==
-----END AGE ENCRYPTED FILE-----
- recipient: age18hpxz0ghvswv9k30cle73prvnzrsuczqh87jjdk9fl50j3ddndmq9xae0n
enc: |
-----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBxZGVDcVNkS1FaemthZlFY
WHdQYnVwL3VPWDFTSXBtaDFGd2hOOThYMDFVCjFVYkpraTRpazRJTExqQkw5RG5K
NXhVNUdoY3hGQVlLekV6MFlKUkhFaUkKLS0tIGNnbzlzTHFJMnRCeW1RSGpaeHRF
RWJTbzlvVE80TTd2Q0FpUUNCT2ZFMWMKtiQwO5VdbK/EfuWtA1sI5zNPPFf4EWmv
G3lM2YudC26BIffbOPMO0tMDDIdQS1gK10FdapZ5IiOgXNjQqvR9fw==
-----END AGE ENCRYPTED FILE-----
- recipient: age1xgy03g3vjydsxcl0qpdgm8rahjcjq95ucxfwlgr22zwjx3p7jf2s9jk6u5
enc: |
-----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSB2dU9lMVl3VnZHYUJUeFdC
clZveEt6N3dRa2NUc2U1VEw2YTVHODUwMkdRCkFmS3ZCS0Y5WUNlVFRrWFNOTE5i
ZklqeWZlOEtrOWlRVGxzQUdZd3hRRTQKLS0tIGNWeERuaUlabEN2VExpNEZQRHRV
dUl3MnJpQzY1VmdoY1Z0Z3l6MjBkR3MKLv4t0Xuhkc48zK2VIJdzplzDXRBk7FBE
KBkWXiCsyKMfoCmJGEZm5ortIp7f9uF8dpADVKizmkr0MZ6fu1R+Cw==
-----END AGE ENCRYPTED FILE-----
- recipient: age1fv5dafs4n3r5n83qm2hfz7xmnflsz0xf9r3saralrptpgf8mvuxq4t8k3u
enc: |
-----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBFSVNPTnp2TzFOWEVWUHRY
RlJYTWNnWHVnS1lGVHhSbUtPbzB3UzduSW40CmpzdjBNL3k0d3pnejBiejRDVmo3
Z3poVC9ZL01ML2h6WmdxcEdJdjh6VWcKLS0tIDJBZVd0aFZ4TEVRSitzS1lTWGVj
VGdzRUxZaDYwQ3FxRUtNYitRb3FrK2cKmr4XM1ClndvmHX7ibyFV6F7zYXFOqjSy
6dyYSP2XDWaJC5C56V+gBaIMr4y2cWidIH8bRj5KFAXNOmYRjXtCTw==
-----END AGE ENCRYPTED FILE-----
- recipient: age120530yclr75k6nrzp6k5jjftj8j4q9v3533guupzk4ct86mjxszqg9e5t5
enc: |
-----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBjN1F3UFg5R1Rad0RRa2Zt
aW1vUDRrV2JKcHZMSC80L1Yxb1RJN3pYQlRrCmVJLyt2R1J0aG9wWDM5dFVZbDVL
VGdSYU1zNVdWSmo3TWdNL2szTHZ5TG8KLS0tIGxkbVhueUVSOWpOOGVaSWdVR1dQ
QXphZkkxUnc0WnZLYUN6ZXFodHIwZjgKTJi/xyUk82juCRM4vTl/WoMIS3QgN74d
rPTngvLf4EgYjw22Qt/b1YiPomq2gyfjTEhA3aEefnV10kffdgwNtw==
-----END AGE ENCRYPTED FILE-----
- recipient: age1c4atxfp05u7zm875s6q8p82ve96rqqpq9smktxlur8pk2yc3qvgql46dp9
enc: |
-----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBLTnE1cDU2cFd1ZkpPY3lr
aXhVQ1YwaHdlYXpyUzMxMUtwUjFreUZSR0MwCk5jQUtzNkw4NGRwWFJrNDFuaVZP
QWdKbS9jTjZmM1FFcGpsMXJsSHFQWDAKLS0tIFhNVmZzVXIzL2dacU9FUXRsQkU0
cnhpVnBQaXNzT2xpQ1A3aTVnamVCM2cK1BwCEuGX+umW+NZfxWpmLDULgcXpsnCh
sX2UfpP2JZh4HdteLHP307Zf40+HkjkTsbOWetmHKbKLXubuLqJiBw==
-----END AGE ENCRYPTED FILE-----
- recipient: age1rjldv3fn3q686647exmcukthr32gmp6s3axs0lhyenvru9ajp9rs24ukvz
enc: |
-----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBtVUpSU05aMHpMSHV1b1JQ
UkNyZDE5R0V4Zms1TWJtUEdBaVE2b0VMN0hFCk5mcy9icEtodGc1T1dzU2JTSE5V
QTZDZUFMYzV5cnRqZ0VWcStXeFlFTUEKLS0tIEltMmsxK3lzOFRRTXhnKzJkcnFZ
STQzRjF1U2hvbUtldTlJS2gwRFFnUWMKxzOtHTmTRGcmWGHfWFECgQsMhXGDa9sJ
G46nwtyfeOs+RyXHD5iQn1S2noIy0CEDnyR8ParxQp+V8lMn1P3EtA==
-----END AGE ENCRYPTED FILE-----
lastmodified: "2024-05-14T03:15:49Z"
mac: ENC[AES256_GCM,data:YKuPtzHtVqPeFKmm5OsR1btshycWB/++TLOEvjoMvIvsiFCo/YaPqyWebpSUOtvg2h/AwJY/6hPX15DPzDe4B2HePHDiiu5ItkspW3XJUkT30Ul4aAhE4hP0wotBQlYJro7mF41dejctLVpVi8V3zqTkr3nHgcMUa6EblUtPIWo=,iv:WsmM7VQrT0QIJjqQUsxW25jO3xSeLuAJEW6kiMQviW8=,tag:B1O/YWlL39PPoaOJNkl9yg==,type:str]
pgp:
- created_at: "2025-06-27T20:11:15Z"
enc: |-
-----BEGIN PGP MESSAGE-----
hQIMA82M54yws73UARAAjeh0KFtf5/yvJ5NVK0w/Xpf8sTZf0ugrSaDY2UbU5FWE
wNFPIUbYiqzIj1fiIM3DlNVUbUrBvho8sO6ckPU1KvNsr0a8knOl+waAJfFtoY3d
CkyQ73ElTb3fRWWdgH2RlaXs4MVtRz1DzE1LYSLCxrARUEOFaBwX1njG22wZp53a
czsizD/QKjAHDhlgLz2MHNAqrbWdq3gnOMTl5PiQIkmgHzIHc/anWxFtCgIls1c5
F8xrqPFYKko7VVc7onM4YgaKbF15QK5oDhggMuSZBLhkQgOMB24sHWx+F2NC+ykc
QLMSmO5hpTHkK62bT3/KqvialJxC6FeQT+Pr1unqdfSqKXJiJeJi9eyLyKX/cvLS
VDKCfezrcIL31dbo8720JUAcpmBsfOOvCcm53GQlwa8mwI7RTk0cFwRBrbdoYSn0
qGQtlk6+VASlJzNKKx2fooAn2F0/sEsh2BA2jMF3yqPoj+pk7RgL8vZPqY1LNtWX
pVKhBsvulh9SNkdYurvp5vsk6wPI6KrgbO7rQqkNeFflgW//h7e6ssbJdBx+B02P
KwYrIlUCZDki7w+0fY+sEycIJDzSNGLDULc7rtcijSqgWExFc2C/1+5JbhgWyaGN
CdgMbHpBtHIWZQ00XTicTORZnUXfT9r4gEkaqLgu8L8DCqAN+LziaAxfJrjRqw3S
XAG2/9TILO07O6DnugINvJNlbquloY+uG0j3zEH+3tc9U9iX8i1SkUSGG509OdjG
BUpMBh+uWrr5GeZb8Iq4d+jJnooHzcAcwS5zhx3mmufdZaRnoZiY09rcYG3K
=AFvy
-----END PGP MESSAGE-----
fp: CD8CE78CB0B3BDD4
unencrypted_suffix: _unencrypted
version: 3.8.1

View file

@ -1,41 +0,0 @@
{config, ...}: {
sops.secrets.mautrix-slack-environment = {
sopsFile = ./slack.yaml;
};
services.mautrix-slack = {
#inherit (config.services.matrix-synapse) enable;
environmentFile = config.sops.secrets.mautrix-slack-environment.path;
settings = {
homeserver = {
domain = "kittywit.ch";
address = "https://yukari.gensokyo.zone";
software = "standard";
};
appservice = {
ephemeral_events = false;
};
slack = {
};
bridge = {
history_sync = {
request_full_sync = true;
};
private_chat_portal_meta = true;
mute_bridging = true;
encryption = {
allow = true;
default = true;
require = true;
};
provisioning = {
shared_secret = "disable";
};
permissions = {
"kittywit.ch" = "full";
"@kat:kittywit.ch" = "admin";
"@slack:kittywit.ch" = "admin";
};
};
};
};
}

View file

@ -1,110 +0,0 @@
mautrix-slack-environment: ENC[AES256_GCM,data:20FOJ9LMLtSND6KXhZpSoOxxH8NYhZWXAaL42byftEsDzsZIpulsMRfU3XBh/1a5JEKRNYcdVfvn4xApbXv2w0xs2oKEsPWgI86B0LjqiWcLEIsVljaErnGC3nDU9/kY5PsDl1cj9WQHZ7O/8nV8GyD/5v/evO7sE+xN4JW/o8kTBBE43fpiTS/unfEkmJF5WhkR20ViGykG3+Z79wgtYVaTBkG1v0gPo8fc+JySClE+N8fz05bVGCH8g77/JtW3Vhdch9T5,iv:uYQXj9POBiX7qJNuovCdDo9lE7t1jRII7zU0YlPDeyg=,tag:jmlgy4S4HnV7vNmLTdxIxw==,type:str]
sops:
shamir_threshold: 1
age:
- recipient: age1n4kdchmkk3rfkaknxhveqr2ftprdpgwckutt23y6u8639lazzuks77tgav
enc: |
-----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBtdENnV1ljN3ZMWHh1REVX
R3FoL0xKd1dkZ01qSUg4OHJJVG05eUt5TldnCndRT2R2dWZiZSttMENidXZ6aHcv
Q0lhTm41VGpGT3hsVElYMTJHKzBKbTQKLS0tIG1rZXdUSGNZbFhLNDJuOHFSNGF5
Ykx4MXYzcDh6ZDZWdVVrT0VxYTlSTk0Kz+ERvXxmP0A+Y8X23yAwTauNeyOsxC+D
R2rHzKtXGIF0OyM/gRj1p0HOWB/+CNB4Z2TR+wzsOEMH/sa9E3HJBA==
-----END AGE ENCRYPTED FILE-----
- recipient: age1cnu37d5fqyahh9vvc4hj6z6k8ur9ksuefln7sr6g3emmn927eutqxdawuh
enc: |
-----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBmVnlTQXJJdHhwOVJmbTR5
aVhMOC91eFFJbUlJZXk1amhYYUx0QjM4K0RRCmhDcTlFdlNwTDFEK0hKZ0xBc1hE
YVFBMTEybXpGRldDcUJjNE0zSDRIbTQKLS0tIG42SExVV0FYb3FTTzJxUm0xNjNF
TnJKRDl3ZG8yOVlnVXB5RHNIWlErRkEKI6zbADZJ5gjQgGuI5IfFJ7TWN3lbwthL
kTcNYElyp7r+5DkHh68NOwoaM50SyrihNUTVxOj54ip97FIWMq2fow==
-----END AGE ENCRYPTED FILE-----
- recipient: age1a0m73qr8hhuz8xemv4vymf4wmpghm2hst8wgrn3pn65ext5mf4ksk0vsdm
enc: |
-----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBQbmZVZGY5Zjg4MmowTi93
QzFDL0ZXNmY1SVNaZVMyR2ZCRW1aMkRwVGo4ClR6WDZBRDFORnFWUkJ6QVZldHJW
Ymx6b3dJOVdqNGhBcFltZ1BhYms3MWsKLS0tIHZhdjZMaWVQMEd2K1JZQTVWTjNu
YTBwR3RXNkUzVi9taUE1aEhJMVZXZGsKHywpcJ7dexnjXOXhlSjmjo4oEQH8LJ34
oaX5wwIHdfYhzx3mjO9TK3swoS9bKb65nj/42VxM+EsfYSp9JcHsEQ==
-----END AGE ENCRYPTED FILE-----
- recipient: age18hpxz0ghvswv9k30cle73prvnzrsuczqh87jjdk9fl50j3ddndmq9xae0n
enc: |
-----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBsd1dlMmxxV0g0WkFlTWlG
K2NvcEdtem84dHUrN0E4N3BPZiszMmc5dnpRCmpGZVA4U3F3YWJyaEJGa1BMM2d5
QWhWMUdESDQyb05hV3lSdjRyR09yZHMKLS0tIHR2eWttVmc5aWVLMDdacmkzQlRa
QktBTU5SN0gyNU05NzQzT0loaEprSGMKT4rcAmkQdGbl79jW4V196u/SkI+2xE+y
Vn92eEe8D0yCvf7CzXEv59viu4jIfHeOsM1nVyPpHjMDg7hZ1/fFFg==
-----END AGE ENCRYPTED FILE-----
- recipient: age1xgy03g3vjydsxcl0qpdgm8rahjcjq95ucxfwlgr22zwjx3p7jf2s9jk6u5
enc: |
-----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBjM1JBLzlpTzNQbnJVZEFH
MjVQaS8wRzBkM2sxZ1RiZ0Mwem5TMFNiY1RNClM5MHFxd05iRGNlb2ZSVDV1SGRN
Y0x0MDB2SXA4emZKR3pSd0hjZHFXczgKLS0tIFZTeEJzUmUxeklDT1YwUXo1ZnlW
WFl4OHM5RlEzOFlINThTVUN6OHJEM1EKncTKPttS1rMwdeTRyb0Vyn4V87G9FbmQ
+z2jn0MosLVR2rpijK38SQjMkBlIjRs6+uwEQW0d3P3Y64oeI0zK2Q==
-----END AGE ENCRYPTED FILE-----
- recipient: age1fv5dafs4n3r5n83qm2hfz7xmnflsz0xf9r3saralrptpgf8mvuxq4t8k3u
enc: |
-----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBScVJZNkJiM3hNZy9DRGgr
U2o5NFV5eTVrbUZPMWRsYlppcUFHYzcyNnl3CnF6NGExZ2RkVHVvVXVyeXdvQVVU
cjBWM2MrdGN5RlZvS1JTUkNsN3dTeTAKLS0tIGpMZGJ6OHAxVjVJM0JNeWlzdWtS
MC9HeThreElQQWlPOEFQVjc4NEVnaE0K6z1i6K0giyUHNWe7S5jbPagYLWouH/ux
6F5BPiXknY5Up33g0y5blBkUuGrU71sGuqna0gq/tnSaToCI9oH0xQ==
-----END AGE ENCRYPTED FILE-----
- recipient: age120530yclr75k6nrzp6k5jjftj8j4q9v3533guupzk4ct86mjxszqg9e5t5
enc: |
-----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBmKzdyRGUwOFFQOVU0ZGdY
RzR1d2NjdGdNM3R0OCtCay9BY0JndW1qQmpNCnB1WnR5WnhnMmdzZllhWkFRTlFE
NjFDQVBzSEk3VUcxM2N2ZE8ydFFjNTAKLS0tIG5oVlNUaWg4ZzBSalJ4dkxleFZW
NVc1Vm1lRnpsQzZ6aHlMTm9lQkJ0VjAKhG9/7V0q04kuL1tjzp7MQSdNMjv3eJ2i
2GHM1rljDo+Jlas92aytfSlI/o3KfpVt5ZLQUBo2GXz/3BhRFVVJ3A==
-----END AGE ENCRYPTED FILE-----
- recipient: age1c4atxfp05u7zm875s6q8p82ve96rqqpq9smktxlur8pk2yc3qvgql46dp9
enc: |
-----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBTNkE5S0NkR0tJNGgyWXdE
cXNWZGhOV0NnOGRKc2wyMWJtWUhzako5WUdNCk9JaUkvUVdGVU1Cb0hVQnpZdzdY
QldrdHhCOGFiR0loRjFWQ05HUGdLdmMKLS0tIHNzeGsvclVBOG8yVnBVRk9zQ2tm
QXVWZS80WFpaRmRNdGFxVGRocHY0UzQKEPtF1a78g50+aBih/OcFgAESLt1k5imM
6RiG0BHAgt6lueaGyIUcOxRVjxHTAxdRikQnTAwncOENcxpphBjNnQ==
-----END AGE ENCRYPTED FILE-----
- recipient: age1rjldv3fn3q686647exmcukthr32gmp6s3axs0lhyenvru9ajp9rs24ukvz
enc: |
-----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBocnVWenVaT3B5NTFGcE1P
d09QWEpqNXNibEhhSmJaTGxBMVNjSXV2V1Y0CkhYNS9rS2k4OW02YThLeDl0enFw
U05udTlkVW9oL3FNbXF3cVcvSk03VWsKLS0tIHB6NWE2djlZakI1eGRNOHRwVEJW
TEUxaytYbVFma2dpNUZROW5BYnA2TkkK4FWyc3cVn2vJDzjXGJfJFnAKFYPIPBAz
F/jgpxxM8MegtyrVAA8HkiEtRW4Ysk0dwaB/r5AP7s0X1oPj/V8YMg==
-----END AGE ENCRYPTED FILE-----
lastmodified: "2024-05-14T21:01:48Z"
mac: ENC[AES256_GCM,data:s3zdz0zOXo9YPt0V9il2MVRKBuaMZ8iIR9267y23IrwH914P+YVYQ9i7tTDfEG5+R1TEbLjli8oNxvLpH/BEicGygR/lEBnrp17ccd3RqCcrKHgFyp/QihJ7cCuBtcDO/0kPKSLWsa51hz71heYJLXaFCcZjvWm6R/z0hh3dE9I=,iv:Dt05Fdgk9YYVAwZgrpvxv8A7I6VG+TRRnPjRx4GZqrc=,tag:G7bFoIVXAd84Eqf+qJRiAQ==,type:str]
pgp:
- created_at: "2025-06-27T20:11:16Z"
enc: |-
-----BEGIN PGP MESSAGE-----
hQIMA82M54yws73UARAAl6+KFBx9Du2/+Yn2dVrzmnJ65VM0oyGsNHj6SzPZOKc4
Gt8yjvZqj2ptMP97YXyZhr8N3vbEEB7RrJF4Eypq07sMs/rDwBxYkCKA8XgJimoe
Or2yQNueo5Yv+2xWvKZieQeTj/MJutKk7pT1uMEzHn9gUdhelAT9x+4AvJfoH8/k
jyw1uGFZhYt0Uc6XAigWqDNZemny7wQ6wMYYLnDOp2O44kZSpVv+bAcOeyoiU0kR
Js05PyImsBuClBEoT89Dy63KqWagSY82rY2g/qngUZjvRgRRtpz+FwMZldnKYKeI
hib2fQJeIYn9NLr/ahJ+CHCXdXovaO/hKbjqMTyEKHfOqdqvedEWpSZ345PB8Id6
eefpSKbeCvJ3a1qq29Wxt8vZxg8qgJZzIym+QZVBMmrRJu9UoWsVAx44O8yJSdL2
CCz3kwbp7fGs9AaW3ZK0fTV6W38NQOFGUm6wQzy39M2foZwN8Ob/k0RpACUZzjlj
kBkT1LsKneggo67ERqAWm1YoIXIAcy+LkvZCNyzNobTH1SD3Q72He1oCSExZ1W7c
rR7XUGQxJMkGbjEAEeqsnc43JbnWhrzHLlT493UAU0foBaejpUwORmPyZPk2+Uun
Hymhmn6c2zgstR12L8/AaqiJFTXCNInRH3UDbLQFGSo1kY9SxI/wsbCmQL7OUX/S
XgHYKE/rhGcEzOWqSVQD8hx3rb2wz6YB1iGIykEWHwWu0XMCfFojcgKRyswmXjRT
F0viw/drIYM+jJNfvqYYaUEdLspgayEP5X2xTaAAe4GhXs66X+9wkbS1Y8ne2nE=
=9gRr
-----END PGP MESSAGE-----
fp: CD8CE78CB0B3BDD4
unencrypted_suffix: _unencrypted
version: 3.8.1

View file

@ -1,93 +0,0 @@
{
lib,
config,
pkgs,
...
}: let
inherit (lib.modules) mkDefault;
fqdn = "${config.networking.hostName}.inskip.me";
in {
services.matrix-synapse = {
enable = true;
settings = {
server_name = "kittywit.ch";
max_upload_size = "512M";
rc_messages_per_second = mkDefault 0.1;
rc_message_burst_count = mkDefault 25;
public_baseurl = "https://${fqdn}";
url_preview_enabled = true;
enable_registration = false;
enable_metrics = true;
report_stats = false;
dynamic_thumbnails = true;
registration_shared_secret = "!!MATRIX_SHARED_REGISTRATION_SECRET!!";
allow_guest_access = true;
suppress_key_server_warning = true;
use_appservice_legacy_authorization = true;
/*
app_service_config_files = [
"/var/lib/matrix-synapse/discord-registration.yaml"
"/var/lib/matrix-synapse/whatsapp-registration.yaml"
"/var/lib/matrix-synapse/telegram-registration.yaml"
];
*/
log_config = pkgs.writeText "nya.yaml" ''
version: 1
formatters:
precise:
format: '%(asctime)s - %(name)s - %(lineno)d - %(levelname)s - %(request)s - %(message)s'
filters:
context:
(): synapse.util.logcontext.LoggingContextFilter
request: ""
handlers:
console:
class: logging.StreamHandler
formatter: precise
filters: [context]
loggers:
synapse:
level: WARNING
synapse.storage.SQL:
# beware: increasing this to DEBUG will make synapse log sensitive
# information such as access tokens.
level: WARNING
root:
level: WARNING
handlers: [console]
'';
listeners = [
{
port = 8009;
bind_addresses = ["::1"];
type = "http";
tls = false;
x_forwarded = true;
resources = [
{
names = ["metrics"];
compress = true;
}
];
}
{
port = 8008;
bind_addresses = ["::1"];
type = "http";
tls = false;
x_forwarded = true;
resources = [
{
names = ["client" "federation"];
compress = true;
}
];
}
];
};
};
environment.systemPackages = with pkgs; [
synapse-cleanup
];
}

View file

@ -1,27 +0,0 @@
{config, ...}: {
sops.secrets.mautrix-telegram-environment = {
sopsFile = ./telegram.yaml;
};
services.mautrix-telegram = {
#inherit (config.services.matrix-synapse) enable;
environmentFile = config.sops.secrets.mautrix-telegram-environment.path;
settings = {
homeserver = {
domain = "kittywit.ch";
address = "https://yukari.gensokyo.zone";
software = "standard";
};
appservice = {
port = 9047;
};
telegram = {
};
bridge = {
permissions = {
"kittywit.ch" = "full";
"@kat:kittywit.ch" = "admin";
};
};
};
};
}

View file

@ -1,110 +0,0 @@
mautrix-telegram-environment: ENC[AES256_GCM,data:/SYgmAFD7hsq829JsOvX+iDvy0uByfuhV8RnRVuEIlwkTZyfKpZYcqfi3/6fk3OlgtE68ULO9ZKY/tmNl2JFKiRiO8wln+oebDMjTAWlUFvjzFAcM5rCb7OQHY4ODZMzEMMtqatCyKztaS7Ql3v7gEZdD98yHzhdpGGPe5eS6ClGdSDRz5hahNIGrpcr1lJIMXBq3F3jKqipUzf3uiJZ8FrakSwUPQyVZhRNsrir4oSOi/gWevJ59Ey3FKr5NjK2DhxRx2/bvJZzNo16e/M8V4pdUkDbl7aOvYsTg+swTQmTNk+bGsWgZjmc/hrwRIJYnNJ/uhMhqHzk5zzMYNS/gCAsZeDWS/XAdFj4jWAcEA6Em34hAw59rpq9liuRJX8i2ewXblWz5dYoUqgv6dHIR5tyLFr4YPBl,iv:70Bn00Rz40m1DvmitbnCNibiLHWmmDc6WN2wQOiyNXc=,tag:qxAISRF4JF6WycS1si+FKQ==,type:str]
sops:
shamir_threshold: 1
age:
- recipient: age1n4kdchmkk3rfkaknxhveqr2ftprdpgwckutt23y6u8639lazzuks77tgav
enc: |
-----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBPWVd6Sno3b1N2eEZoVm10
OUlxeDVaZ0pBVkxNeTdXSlpCenE2Sll2RWg4CnNLUHFZTERGdzI2N3FlVm5kSEdW
QkZqWlRQakpvbUdGbFdyMnVCNUlxbDgKLS0tIFNWeDZmY3ZZZHg2SDZDTVM1OHRV
N0pLZnRyNXJyMTlRTnN0TXF4enBqdXMKKbt0auYLaFw5+pps2IHztskWw9vnjX+z
N1FyyF+Z5jSfsUv1/xhyu+Aq5BnevhouyEXVyNbhrJeiI/pDUfBwVA==
-----END AGE ENCRYPTED FILE-----
- recipient: age1cnu37d5fqyahh9vvc4hj6z6k8ur9ksuefln7sr6g3emmn927eutqxdawuh
enc: |
-----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBqSkpoMms1TUhEa1YvRTRJ
ZFpzQ1dvLzJmTWtXYThYQS9CZHVVREZvOGxFCkR6MWMwNlQ4aHIxbHBYaXVWY0Iz
L1RDWFphMlZGemdTZ0dsR3V3aDROeEEKLS0tIFIyNTljN25iRVpwcFJsb2lZRDA0
WWxMZzQrWVNjZitYYWp2YnJ6NlFGY2sK08zbwMo0wJOELKgshqoTbxMCc5/UlrJp
1g0tIdqyhkQvgCvUt1jDcdoAus3yCfdms8DgcG7sjRAHtHjAlIPSPg==
-----END AGE ENCRYPTED FILE-----
- recipient: age1a0m73qr8hhuz8xemv4vymf4wmpghm2hst8wgrn3pn65ext5mf4ksk0vsdm
enc: |
-----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBnZ1l4VG9kTjJ5UHloUkFj
SE1yc1RVNkhEdVlUT1gvV2RGM2ZyYkcvcmlnCm82OGtSMUdzWGFacG5vK1NiMDFo
VW9FQzVhV2syZ3E3Y3IzNjlURnBKOXMKLS0tIC9haDBYQXRJTjN5cDdYZ1NKSGJC
WWpTc3VlSEY3SW5RTkJSSnE1YWtGNnMKGRNgntEe8rotnKtz6MCI0IGMqTBHpnZf
8XmQVBzK8qSw5FjfUbNzkS+bjVbCdzMzo2JAnwW/GmoP+YSBitAn3A==
-----END AGE ENCRYPTED FILE-----
- recipient: age18hpxz0ghvswv9k30cle73prvnzrsuczqh87jjdk9fl50j3ddndmq9xae0n
enc: |
-----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBFRi95QmdsM3kvOVFEdW85
WU40N0hkbEdBLzRGc0ZnK3pxbnZzYTNFNlhVClhjdXMwYXhpRDIyUUY4Y2tpT1lI
bUVrOVlUb3VPYUNaS0pvVWtpcFIwTjgKLS0tIGNIVW1rV0RJTVZuaHh2T2o4UWFk
eEpVN3BsekJzeExramRoZ2ZqM3J2NE0Ka990s1RgJ4E8dTTVaPSgjCiW7tqNcpCl
E4hxsudQPoFEFQjc7+Bp89tgAS0Li1/i2gXFW+tIFgI45xSTZnLy3w==
-----END AGE ENCRYPTED FILE-----
- recipient: age1xgy03g3vjydsxcl0qpdgm8rahjcjq95ucxfwlgr22zwjx3p7jf2s9jk6u5
enc: |
-----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBZWjFBR1VpMUxxd1RSYkJq
QjViVHpTbU85bHdBRDZNeG9EQnVVcmJtQkNrCjk1anIvbllSL0h2Uyt0MGpvSUFK
S3B2TjRnNDR0MXpPd0dneEo5R3ZvZm8KLS0tIEM1aVBFcmtRdDhXNjJKTENaVE55
T1lnZ2dKUHJIQW5NTXJpSmVKaUxKZkkKCro8gZcEC8rYNLDEsM+OI28qJwR8LdCD
Jpj75I2IAA3+Ygr9GMuMMmc3nY8P/WN9zd+EC25WDhLUrSrFUsE+6g==
-----END AGE ENCRYPTED FILE-----
- recipient: age1fv5dafs4n3r5n83qm2hfz7xmnflsz0xf9r3saralrptpgf8mvuxq4t8k3u
enc: |
-----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSB2ejR0NkxyVjljTWc2alVB
T1VsQXVacmtJNXVXamhycVRmenpGSlVBSG1nClFGbUNJZ1AwRUxzNUVOcFZ5U2oy
ZTIzTFBDS0xzTHcvVDBJOHdjOGQ1Y2sKLS0tIDJjaEhZNDQ3T1I5emk2UnRPa1ZT
NzQwbUErUmREYlpwaUUyOWxNUDkxZmcKN8NzDN/jgOlP63whB1nMh5qKum1HY7j4
xvFp/gOXmLPdXGt79+EjyTfbFDUCnwuNd42Q1Nqpqn187E2yiHeNEw==
-----END AGE ENCRYPTED FILE-----
- recipient: age120530yclr75k6nrzp6k5jjftj8j4q9v3533guupzk4ct86mjxszqg9e5t5
enc: |
-----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBidXNZRHJOYjcvODd6aVFC
Ylh4TUZhbWhQZFAvRmpMTnM3UHJjeDBUTVZnCmRYeWluT0Z2OG9tSVQ5ZGdxNzVO
N2VyK2dFQkw3NWdVSUNZenNYYUxHRlEKLS0tIFhHVUgrWmd5cHNpUXNEbmsrbWk4
VnUvcU12QVRTRkdFb0VYNDVGNkhZYnMK5XCDUP9t2f3vfjYTx8lEfXBXcHK/O+zW
rz8sFf9LdyPvdUuHCkkhlvRgYJ4gaXEvEyT9qpAlb9/Opm99MMFy7g==
-----END AGE ENCRYPTED FILE-----
- recipient: age1c4atxfp05u7zm875s6q8p82ve96rqqpq9smktxlur8pk2yc3qvgql46dp9
enc: |
-----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBBZVBVWXRtbXZhdzZONEkv
UEpwRlQ2R2FIc3lLaFZHTG02SXo3WWZzVW4wCmQ1RkYrTnBRemZaVG1DbGhNRE8x
MXczTlhKdnkxV3l6VW1tTHZmOW52QnMKLS0tIEdLL1VMVGJsQjBOWVJaRm55SWlV
UUNIY0dMdTRsOGpaYS9mQXZBOS8rQWcKY5xfZBozgCErLzlWLwuol5xnJwQq2+q6
+3PoW/b/e8HwC05WbfrwgcOm7mvCmiWxsoZJ8Hqjylox2szf3T0DEw==
-----END AGE ENCRYPTED FILE-----
- recipient: age1rjldv3fn3q686647exmcukthr32gmp6s3axs0lhyenvru9ajp9rs24ukvz
enc: |
-----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBsdHg3WFRmZlhaK0RpaXdC
VlZDR3pRZmt4TGVpVmxab1VnaFJjL1VtSkNzCll3YmlYbFlHTElsZU5IdlE0WEZP
VlFucmxscmQveFFZSDh0Y3FKbWMzVjQKLS0tIFFOb3Jxa2JreDRXcGM5ZkQ3RVpB
QXI4TE5TVjIvWW4za2EraDV6aS9wSlEKId93FJCmOrJAxNn7k+rKlVlDiE11d9O1
cO+Jn3tVKL4MnqRgkyI65JeGVvfkvXWYd/5pwgQnUrzzZJEQMENCZg==
-----END AGE ENCRYPTED FILE-----
lastmodified: "2024-04-21T21:17:03Z"
mac: ENC[AES256_GCM,data:FxmPFJXQ1oCFA7K3bXuAcKDDCzDQpVsVSZksz9NHw3p7J5kKNy/M3PulXJdlC8pw5NbtK8nLlYP6mcjgSRICaXXUbked13gDD2bbB6DrjcXjhes5ccwcPOb4kLuUcTgGJ8q5BSD3isLOO31E4RZHmX10F8lJLPqR5whoDs3IajE=,iv:FExSdR/+CdFkcP2V6C7n4NgvbdibRol3lTVBjUlhWWE=,tag:nSHHoo/ykTzZNZlXDePW5g==,type:str]
pgp:
- created_at: "2025-06-27T20:11:17Z"
enc: |-
-----BEGIN PGP MESSAGE-----
hQIMA82M54yws73UAQ/+PT7h53pWQQLbZ+uANvfNEiAmKK1eyQ3UPcNfL3yEm380
WwOskPFp0/7h8vgfKDUSl71tpQ4am/9VUAUglOMSY2ikAXp0v8opmHr9s+jtqVzR
3BL+8eVoMDRTcFPmLEYIYoTN5MU8LkAQUptB3XZ7qCk3+itf4AdXHC1XywyGzIOO
HfivoXykfj5mPk07VHYktNhvK1jg3qaYWxPSastE4mM/a2LBjng9Byxf3x6bYbWq
3Ewdhv7qnlQj6YoGXzQetaeN/p7bxdA/fwpmpfHowzYkRo2BI74sAhMcJNyHNlqN
LlGHzjFxI4J1aCr56VV+1MifhMMNWz1HDhRIoy6nBsi3zWHiTRlZtpKAmD+9/X9c
fETT48WIPn95OH+YwOZcerC6hUycGQdYkVZO7wMeHMZH++pxs0rBFUTyfj/cpAKs
i+SAff+NMlJSGrLNgHEZgIRpE79lMfaIuToIU8VlN+oqQ/SuT7Q59ISb/ytaGWDQ
OGqEAYWUuW0t+cnHV+j/YBqK+yCpvSIg0jMKHFukc/SRQzqGMZvGQZTDh+4BDV/A
f9LaVu23Ob5IE8NchMBGc8+PP1X9kO/WV+xagiVMCeQD8rG5aSD7tSPwkeDFhN5t
Iv5pplPRM+Cq1j0bSD3wsbWsqfg9RNQUQw1TeK51rKLqkwGu8XLUuokNFDn2tJrS
XgHydp5s3FI30cdKOo8vJMhpr2+NWw6pflplinzkbqGmEdVoTeQquY/cNVJCdYYm
bSRt5oo/7g+9tokvQybJF0243YRvRGNT/9f+uwT9FwLqZ+OtxulJe9Zydcksink=
=/OW+
-----END PGP MESSAGE-----
fp: CD8CE78CB0B3BDD4
unencrypted_suffix: _unencrypted
version: 3.8.1

View file

@ -1,33 +0,0 @@
{config, ...}: {
sops.secrets.mautrix-whatsapp-environment = {
sopsFile = ./whatsapp.yaml;
};
services.mautrix-whatsapp = {
#inherit (config.services.matrix-synapse) enable;
environmentFile = config.sops.secrets.mautrix-whatsapp-environment.path;
settings = {
homeserver = {
domain = "kittywit.ch";
address = "https://yukari.gensokyo.zone";
software = "standard";
};
appservice = {
port = 9049;
};
whatsapp = {
};
bridge = {
encryption = {
allow = true;
default = true;
require = true;
};
permissions = {
"kittywit.ch" = "full";
"@whatsapp:kittywit.ch" = "admin";
"@kat:kittywit.ch" = "admin";
};
};
};
};
}

View file

@ -1,110 +0,0 @@
mautrix-whatsapp-environment: ENC[AES256_GCM,data:yfyECUKpmXyOFSsl1i1SupOdnAF2yisuY94v5JYjEsOi4aqoJ8c3ryErHp6/3mDosJRQm5E8YsuHDbs5t/OD6JcgIVff5V5igRcN06mvtfA0URDNOOetIwWreJOJRqD4DW7tdKKfGg1fDZpcJ4rEe+uV2LMB1owyTzCViT4bD9czxwxPUp145ss8KY03MEkO5/FwWZ2K/sZB/cAOZPqe9zWT2PhWebhKOflCbGiqOu5vD7wQSVOJHvmo6zW0KA99XixxtD1zeutp7jzK,iv:LeVF/OgzQJgOPiaqxUAuRaYBZmkLqtkQietvJBDA3sU=,tag:HhBXbPh1x7E+rJheZOvEDw==,type:str]
sops:
shamir_threshold: 1
age:
- recipient: age1n4kdchmkk3rfkaknxhveqr2ftprdpgwckutt23y6u8639lazzuks77tgav
enc: |
-----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSArUnczb0xsOHczL1RmUzNZ
R2QvS0VvVzRmdUljZ1ZTbWRjcE1lUG9PVzFNCnZXQmdxelF2MWUzQm41Q04rdDVw
RktQUXdaSFRmQUFxbk9BNWRTVFA1MFEKLS0tIHpoSzdTRGlNejBwZEpnU2VhdTli
ZnVwSk5taXN6bVJPTGxPdTF6cVZOQlUK21ZkeMOKRSfsSogJUJWOZHVegjA99zcT
Ml5FAp5FjjvXSH+dkvdhzEm5DQfy99bcGoaLUEFBDMKDZgRhWT7w/g==
-----END AGE ENCRYPTED FILE-----
- recipient: age1cnu37d5fqyahh9vvc4hj6z6k8ur9ksuefln7sr6g3emmn927eutqxdawuh
enc: |
-----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBET0lCc29VSHV3ZzZtUy9i
RmNHc0hEVmZIU0tDd3RaTnpoaTBUU1Y3QURnCkFXeWE5Ylo3SEtiQ25NRTZvZFh1
SldZVGhKdVZQamJlRGZnSElwYmtqUVEKLS0tIEdYN0oxd29VM3RMOGRNTENkOW12
TGtZbEFDK0lRZFp4UXNYbm1yU2ZWWjQKi68rz6O9hSYR09+8PhY2Ll4ogCYJDyM3
wMClHCqAnmqKZ3pPNmfXhFJhmK89SxhRYFr79y8RP16yPTh7POnRbw==
-----END AGE ENCRYPTED FILE-----
- recipient: age1a0m73qr8hhuz8xemv4vymf4wmpghm2hst8wgrn3pn65ext5mf4ksk0vsdm
enc: |
-----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBGSzNTdTZ1Q2lSL3FWdHhz
dEdEMHpMVno1LytFcVpOUlRQdW03Wmg2YTNVCmhoN3hkbEpKUXY3M1VXY1Ryak8x
QkgzZDRSeEVoRm1JbVdpcnlNbFR3eUkKLS0tIHdET2dZY04yNFFhdXhSQTVUbUtp
cnQ1OG56NEZqelh6WDBQU1p3TXg0NnMKx53faJlKZojZQX9skD7APANwoSM2x7Pw
plJMOnv5XBGcX0ejI5vro67ax0PA/1UnoC6W+zlZ+t1588F4fxx6qA==
-----END AGE ENCRYPTED FILE-----
- recipient: age18hpxz0ghvswv9k30cle73prvnzrsuczqh87jjdk9fl50j3ddndmq9xae0n
enc: |
-----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBrb2xNZFRJN3FyZnR1NjNB
NHo1Q0t2ZHNVS1hKbFpCeWxpTGNlSlgvY0hrCnNlWm1JZmdqMTRVaHNMOXkxK0JJ
QitMaXJKejhZd0p1M25aRGJ5eFBoL2cKLS0tIElET3hteUN4NExsaGdEV3RpRXN1
OTM0T3g0d2s4VTFXVm1NS1hhTVZGaTgKRee0smFX83zKfWLp1plWtl/xCiDmIkEu
4qSOac/uW1PiXTS+3WcPJYwS+PRoj2WtzbGsJyXxW6iBUA8bbDV55Q==
-----END AGE ENCRYPTED FILE-----
- recipient: age1xgy03g3vjydsxcl0qpdgm8rahjcjq95ucxfwlgr22zwjx3p7jf2s9jk6u5
enc: |
-----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBWZ0JJaDIzUWs3MFIxMWpE
aGROSGk2c3lYc1Vxa3JwZVBERnFDWUlkQzB3ClhKOGxvbHpVM3dvSnI0MCtBQ2ov
V1ZOcVhLczZNSVRtMElWbmllOTJlSDgKLS0tIE1NTEJMa0lWZkR6ZjFQT1oxQnBV
QTZIS3JXcldxZE1YL21WYXJlbHNIcGcKQEq8Um82aixK55mRa4zw0W2HBTXD0cGO
9x9iESDkMwFQQvw8V7u1/NQGOjy/9sXEFc9okeicXBbcyvoSSYPsZQ==
-----END AGE ENCRYPTED FILE-----
- recipient: age1fv5dafs4n3r5n83qm2hfz7xmnflsz0xf9r3saralrptpgf8mvuxq4t8k3u
enc: |
-----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBWZGJ1WHM3eWthWVZpcENi
YjdaM3lvZTN5VVpqb3c1NzJUSUFvcTRHNEQ0CnU0OGFlZUpCaWcwYWNpdE5SQlBz
eTM4SGpLbjVKV3pOVW1teG9jTWpkOFEKLS0tIFhHbUZocEZpN080UXM5SHkwSDJk
UmxieUxJSHBoZ1JKaFRSaHdPRE5NZFkKrZGY5teVNbHiPiMR1greIxeQpy/ngqNw
EoffUTtjK+HVy22y6F7idWqMrm2ZPKZumD/tZMyiH4GV9h5NZMJZzw==
-----END AGE ENCRYPTED FILE-----
- recipient: age120530yclr75k6nrzp6k5jjftj8j4q9v3533guupzk4ct86mjxszqg9e5t5
enc: |
-----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBSN2xLZjNDdmNnQnI5Zkw5
MGJURk9DcEIyTlpjOXc2RjZkOTF6djFQSWpRCnJvVWZJTmhWQU52N29BTDROdDVo
QlBTWGdWOW9oRHVSNW9mUW4rZ2RodTgKLS0tIEE1VkkwVmJvYzVLTlM0cTYrRzda
UTBXYjl4TTd2TTBHS2wxZVJiUFJQb2MKArkEnRgQ/BlAECQsAxmFSY76r/vwPCp5
Q+Iz0dZSr820wxi7KGhtc9yRIh6Zximi7wjjkCPbEUCJeBLwIBeLCg==
-----END AGE ENCRYPTED FILE-----
- recipient: age1c4atxfp05u7zm875s6q8p82ve96rqqpq9smktxlur8pk2yc3qvgql46dp9
enc: |
-----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBWOG13bzJHMEk3T3BjMTY4
VTd0ckRXaGxVRWJZc0NyV3F4bU90Z0tBWlhvCjB4dHFIckdBekVib1JVWW9UL3h1
VEFGalpleWN0cCtvSGozdmEzMHFFNnMKLS0tIE92WTdwRkJvY08wTStpeW84cTBW
MCsvUC9KSS82ODRVUkRhblZoQVIrMnMKG+xsAp6YZCSH/57mnnvd+YCCTshW9o0W
aqEeLteSslnB3f3S981QgpDNFZSxHXHDmK+Az0i32fDLn2PKym2Tkw==
-----END AGE ENCRYPTED FILE-----
- recipient: age1rjldv3fn3q686647exmcukthr32gmp6s3axs0lhyenvru9ajp9rs24ukvz
enc: |
-----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSB2SGoxZWJUVFF3dFJOSUtu
N2FETmh4K1NlMWVNTmQxbCt4c2JjRHdYZjFNCkJCeGtnS21mN0xTeG5JdjhuRndW
ZHI2NktIdzd6QkYwU1dwekM2N0VadHMKLS0tIG1hOXQ2TUZuTVVOMmRaczZLRzZL
RXdGWHpSa3g2bk5YcG9vU1NwYTBwRlkKcqX/3OU9GAI/8NZcQiyfItdc0M6JxNFs
EDsTgGbvMRH944STFvcL2ytFb7K/ZQpuFwOZQF39UmfFcEuxe0OATg==
-----END AGE ENCRYPTED FILE-----
lastmodified: "2024-04-21T22:01:48Z"
mac: ENC[AES256_GCM,data:MWwXYxo4dC9XlJWA1Tnp0qBzt31E/UuYyIPtMZNjY5o+km0BZrxuGhFwewUadyRajk6vXhbMW2nOYCQBlEjiOENrUOO0sLAIdu8QC00bZ9c4UlSL/OZJosTUVvkFrE14Os697gYV2RNenFZS/+QyvAdiMgVjgNeLjBRj3nt9QBg=,iv:ZVVfiDkUpO9WeusJq91FSTtmhGXnX08WTNW3okqqKxo=,tag:ERe7uNv2p0WcZDwJnWCNpA==,type:str]
pgp:
- created_at: "2025-06-27T20:11:19Z"
enc: |-
-----BEGIN PGP MESSAGE-----
hQIMA82M54yws73UAQ/9HrRu3u8tt7/zKUx7FEQSLur76IP3n6QoeTLkJ4FKrK7j
f7LMeb1kf0peL9Xbwy47Z9HbTIKrg5g6s+cLkkLPLRlNe60O3nQBANDvOjDnpRCm
MmEtq1BDrx9XJ0u29fJiJX9gGTA4pbAefvLGLCnmMevUHHJjoi3b3zWZ5s+80jxH
rPnz3T+RRBltJ8/zY2xzPfSy5V9pkrzfm3CMzcbUyJQyDKKakoqHScGO9fBC3JzV
BQu8zdwqYWgQnGGvEdbj+4ZNJYfjwPJnu+TXqQtArlw1/a+Phw9JxX/clv5i6wH0
7uq9rtFXEEH5LHTtkeLn9xvFpR6zSNxxVcLDQiRNYAEDT7/VPNe60+5NvoumZztu
Vgd4l0UbxTAijiTlLzeXWbMXwjz7hwHyZxicgoiQ3mBCY1js00oroAtPOyrZBgEU
oQcipgqc4/6IVHik2hCa+u9QzOPaGUVtaH57lOSoj0tfoDGvxU4o+xUGK1id9yBo
buBvGRXqJbnNdrSlI8x6KF/9YVn5FYOUV4utWSqPBiivIyxjOCionrZ4cydlr984
upbK/GpfMKDnuLfROZns9Be1FDNq03aBS25rLLN3goaLx3wdPcU275GqGbCTsZzy
4UAaWRRO2fsQ0K1MKxk6F/z7oNhBnykwMk6bj1mmXfS8HNgkwrUmHvy8xzWXrzXS
XAHAH1/2LnPScaPsFtc/x+Ravh/NWq/3LSpc7lH34yV8hJIWkNWKWzxtnTWO+0Y3
vUnNHIi3B9odzUir4NzYh383mB7mQNzewgivuAsrNRnvpLWXqrMHqzxyPO1A
=w79j
-----END PGP MESSAGE-----
fp: CD8CE78CB0B3BDD4
unencrypted_suffix: _unencrypted
version: 3.8.1

View file

@ -4,10 +4,11 @@
... ...
}: [ }: [
inputs.rbw-bitw.overlays.default inputs.rbw-bitw.overlays.default
inputs.arcexprs.overlays.default #inputs.arcexprs.overlays.default
inputs.darwin.overlays.default inputs.darwin.overlays.default
inputs.deploy-rs.overlays.default inputs.deploy-rs.overlays.default
inputs.neorg-overlay.overlays.default inputs.neorg-overlay.overlays.default
inputs.niri.overlays.niri
(import tree.packages.default {inherit inputs tree;}) (import tree.packages.default {inherit inputs tree;})
(final: prev: { (final: prev: {
wivrn = prev.wivrn.override { cudaSupport = true; }; wivrn = prev.wivrn.override { cudaSupport = true; };

View file

@ -1,13 +1,20 @@
{ {
wrapShellScriptBin, lib,
pkgs, writeShellScriptBin,
}: git,
wrapShellScriptBin "nf-build-system" ./build-system.sh { cachix,
depsRuntimePath = with pkgs; [ jq,
nix,
curl
}: let
inherit (lib) makeBinPath;
in writeShellScriptBin "nf-build-system" ''
export PATH="$PATH:${lib.makeBinPath [
git git
cachix cachix
jq jq
nix nix
curl curl
]; ]}"
} exec ${./build-system.sh} "$@"
''

View file

@ -1,12 +1,20 @@
{ {
wrapShellScriptBin, lib,
pkgs, writeShellScriptBin,
}: git,
wrapShellScriptBin "nf-update" ./update.sh { cachix,
depsRuntimePath = with pkgs; [ jq,
nix,
curl
}: let
inherit (lib) makeBinPath;
in writeShellScriptBin "nf-update" ''
export PATH="$PATH:${lib.makeBinPath [
git git
cachix cachix
jq jq
nix
curl curl
]; ]}"
} exec ${./update.sh} "$@"
''

View file

@ -4,6 +4,7 @@ _: let
lib, lib,
pkgs, pkgs,
tree, tree,
inputs,
... ...
}: let }: let
inherit (lib.lists) singleton; inherit (lib.lists) singleton;
@ -45,7 +46,15 @@ _: let
gaming gaming
]) ])
++ (with tree.nixos.environments; [ ++ (with tree.nixos.environments; [
hyprland #hyprland
niri
]) ++ (with inputs.nixos-hardware.outputs.nixosModules; [
common-pc
common-pc-ssd
common-cpu-amd
common-cpu-amd-pstate
common-cpu-amd-zenpower
common-gpu-nvidia-nonprime
]); ]);
home-manager.users.kat.imports = home-manager.users.kat.imports =
@ -53,25 +62,25 @@ _: let
graphical graphical
]) ])
++ (with tree.home.environments; [ ++ (with tree.home.environments; [
hyprland #hyprland
niri
]); ]);
networking.hostId = "c3b94e85"; networking.hostId = "c3b94e85";
home-manager.users.kat.wayland.windowManager.hyprland.settings = { home-manager.users.kat.programs.niri.settings = {
monitor = [ outputs = {
"DP-2, 3840x2160, 0x0, 1" "LG Electronics LG Ultra HD 0x0001AC91" = {
"HDMI-A-1, 1920x1080, auto-right, 1" scale = 1.25;
]; };
env = [ };
"NVD_BACKEND,direct" environment = {
"ELECTRON_OZONE_PLATFORM_HINT,auto" NVD_BACKEND = "direct";
"LIBVA_DRIVER_NAME,nvidia" ELECTRON_OZONE_PLATFORM_HINT = "auto";
"__GLX_VENDOR_LIBRARY_NAME,nvidia" LIBVA_DRIVER_NAME = "nvidia";
"NIXOS_OZONE_WL,1" NIXOS_OZONE_WL = "1";
"__NV_DISABLE_EXPLICIT_SYNC,1" QT_QTA_PLATFORM = "wayland;xcb";
"QT_QPA_PLATFORM,wayland;xcb" };
];
}; };
programs.ssh.extraConfig = '' programs.ssh.extraConfig = ''

View file

@ -1,114 +0,0 @@
_: let
hostConfig = {
config,
lib,
tree,
...
}: let
inherit (lib.lists) singleton;
drives = {
root = {
raw = "/dev/disk/by-uuid/af144e7f-e35b-49e7-be90-ef7001cc2abd";
luks = "luks-af144e7f-e35b-49e7-be90-ef7001cc2abd";
result = {
device = "/dev/disk/by-uuid/cf7fc410-4e27-4797-8464-a409766928c1";
fsType = "ext4";
};
};
boot = rec {
raw = "/dev/disk/by-uuid/D0D8-F8BF";
result = {
device = raw;
fsType = "vfat";
};
};
swap = {
raw = "/dev/disk/by-uuid/111c4857-5d73-4e75-89c7-43be9b044ade";
luks = "luks-111c4857-5d73-4e75-89c7-43be9b044ade";
result = {
device = "/dev/disk/by-uuid/bebdb14c-4707-4e05-848f-5867764b7c27";
};
};
};
in {
imports =
(with tree.nixos.hardware; [
b550m-itx-ac
])
++ (with tree.nixos.profiles; [
graphical
wireless
gaming
])
++ (with tree.nixos.environments; [
kde
]);
home-manager.users.kat.imports =
(with tree.home.profiles; [
graphical
devops
])
++ (with tree.home.environments; [
kde
]);
boot = {
loader = {
grub = {
enableCryptodisk = true;
};
};
initrd = {
luks.devices = {
${drives.swap.luks} = {
device = drives.swap.raw;
keyFile = "/crypto_keyfile.bin";
};
${drives.root.luks}.device = drives.root.raw;
};
#
secrets = {
"/crypto_keyfile.bin" = null;
};
availableKernelModules = ["nvme" "xhci_pci" "ahci" "usb_storage" "usbhid" "sd_mod"];
};
kernelModules = ["nct6775"];
supportedFilesystems = ["ntfs"];
};
fileSystems = {
"/" = drives.root.result;
"/boot" = drives.boot.result;
};
swapDevices = singleton drives.swap.result;
services.openssh = {
hostKeys = [
{
bits = 4096;
path = "/var/lib/secrets/${config.networking.hostName}-osh-pk";
type = "rsa";
}
{
path = "/var/lib/secrets/${config.networking.hostName}-ed25519-osh-pk";
type = "ed25519";
}
];
extraConfig = ''
HostCertificate /var/lib/secrets/${config.networking.hostName}-osh-cert
HostCertificate /var/lib/secrets/${config.networking.hostName}-osh-ed25519-cert
'';
};
system.stateVersion = "21.11";
};
in {
arch = "x86_64";
ci.enable = false; # System currently not used
type = "NixOS";
modules = [
hostConfig
];
}

View file

@ -45,6 +45,7 @@ _: let
]) ])
++ (with tree.nixos.profiles; [ ++ (with tree.nixos.profiles; [
graphical graphical
quiet-boot
wireless wireless
laptop laptop
gaming gaming
@ -78,9 +79,6 @@ _: let
swapDevices = [ swapDevices = [
drives.swap.result drives.swap.result
]; ];
boot.loader = {
systemd-boot.enable = lib.mkForce false;
};
home-manager.users.kat = { home-manager.users.kat = {
wayland.windowManager.hyprland.settings.monitor = [ wayland.windowManager.hyprland.settings.monitor = [
@ -88,7 +86,10 @@ _: let
]; ];
}; };
boot = { boot = {
loader.grub.useOSProber = true; loader = {
grub.useOSProber = true;
systemd-boot.enable = lib.mkForce false;
};
extraModprobeConfig = "options snd_hda_intel power_save=0"; extraModprobeConfig = "options snd_hda_intel power_save=0";
extraModulePackages = [config.boot.kernelPackages.v4l2loopback.out]; extraModulePackages = [config.boot.kernelPackages.v4l2loopback.out];
}; };

View file

@ -89,6 +89,9 @@
inputs.nix-gaming.nixosModules.pipewireLowLatency inputs.nix-gaming.nixosModules.pipewireLowLatency
inputs.nix-gaming.nixosModules.platformOptimizations inputs.nix-gaming.nixosModules.platformOptimizations
inputs.clipboard-sync.nixosModules.default inputs.clipboard-sync.nixosModules.default
inputs.niri.nixosModules.niri
inputs.lix-module.nixosModules.default
inputs.nixos-cli.nixosModules.nixos-cli
]; ];
}; };
}; };
@ -108,7 +111,7 @@
nix-index-database.hmModules.nix-index nix-index-database.hmModules.nix-index
plasma-manager.homeManagerModules.plasma-manager plasma-manager.homeManagerModules.plasma-manager
base16.homeModules.base16 base16.homeModules.base16
catppuccin.homeManagerModules.catppuccin catppuccin.homeModules.catppuccin
inputs.sops-nix.homeManagerModules.sops inputs.sops-nix.homeManagerModules.sops
chaotic.homeManagerModules.default chaotic.homeManagerModules.default
spicetify-nix.homeManagerModules.spicetify spicetify-nix.homeManagerModules.spicetify