1
1
Fork 0

Compare commits

..

5 commits

Author SHA1 Message Date
bc85c22f39
nix: update flake.lock
Signed-off-by: Myned <dev@bjork.tech>
2024-10-06 10:17:03 -05:00
0fe3308ef6
nix: move settings.containers to top-level custom
Signed-off-by: Myned <dev@bjork.tech>
2024-10-06 10:16:52 -05:00
3e787c2cba
containers: add netbox with plugins
Signed-off-by: Myned <dev@bjork.tech>
2024-10-06 10:16:06 -05:00
1853d1a9ac
nix: fix formatting
Signed-off-by: Myned <dev@bjork.tech>
2024-10-06 10:14:20 -05:00
7fe0184565
nix: update hyprland to v0.44.0
Signed-off-by: Myned <dev@bjork.tech>
2024-10-06 10:14:03 -05:00
31 changed files with 409 additions and 237 deletions

View file

@ -1,4 +1,4 @@
# !! Generate flake.nix
#!! Generate flake.nix
# https://github.com/jorsn/flakegen
#?? rm flake.nix
#?? nix flake init -t github:jorsn/flakegen
@ -58,16 +58,11 @@
bitwarden-menu = flake "github:firecat53/bitwarden-menu" // unstable "nixpkgs";
fw-fanctrl = flake "github:TamtamHero/fw-fanctrl/packaging/nix" // unstable "nixpkgs";
hypridle = flake "github:hyprwm/hypridle" // unstable "nixpkgs";
hyprland = flake "git+https://github.com/hyprwm/Hyprland?ref=refs/tags/v0.44.0&submodules=1" // unstable "nixpkgs";
#// hyprland = flake "git+https://github.com/hyprwm/Hyprland?submodules=1" // unstable "nixpkgs";
hyprland =
flake "git+https://github.com/hyprwm/Hyprland?ref=refs/tags/v0.43.0&submodules=1"
// unstable "nixpkgs";
#// hyprland =
#// flake "git+https://github.com/UjinT34/Hyprland?ref=vrr-cursor-fix&submodules=1"
#// // unstable "nixpkgs";
#// hyprland = flake "git+https://github.com/UjinT34/Hyprland?ref=vrr-cursor-fix&submodules=1" // unstable "nixpkgs";
hyprland-contrib = flake "github:hyprwm/contrib" // unstable "nixpkgs";
hyprland-plugins =
flake "github:hyprwm/hyprland-plugins" // unstable "nixpkgs" // follows "hyprland";
hyprland-plugins = flake "github:hyprwm/hyprland-plugins" // unstable "nixpkgs" // follows "hyprland";
hyprlock = flake "github:hyprwm/hyprlock" // unstable "nixpkgs";
hyprpaper = flake "github:hyprwm/hyprpaper" // unstable "nixpkgs";
hyprpicker = flake "github:hyprwm/hyprpicker" // unstable "nixpkgs";
@ -110,10 +105,7 @@
common = branch: arch: modules:
inputs."nixpkgs-${branch}".lib.nixosSystem {
system = arch;
specialArgs = {
inherit inputs;
};
specialArgs = {inherit inputs;};
# TODO: Clean up optional attributes with each new release
#!! Options will diverge between branches over time
@ -155,36 +147,14 @@
unstable = arch: modules: common "unstable" "${arch}-linux" modules;
in {
### Stable
myarm = stable "aarch64" [
./profiles/server
./machines/myarm
];
myne = stable "x86_64" [
./profiles/server
./machines/myne
];
mypi3 = stable "aarch64" [
./profiles/sbc
./machines/mypi3
];
myarm = stable "aarch64" [./profiles/server ./machines/myarm];
myne = stable "x86_64" [./profiles/server ./machines/myne];
mypi3 = stable "aarch64" [./profiles/sbc ./machines/mypi3];
### Unstable
myeck = unstable "x86_64" [
./profiles/console
./machines/myeck
];
mynix = unstable "x86_64" [
./profiles/desktop
./machines/mynix
];
myork = unstable "x86_64" [
./profiles/laptop
./machines/myork
];
myeck = unstable "x86_64" [./profiles/console ./machines/myeck];
mynix = unstable "x86_64" [./profiles/desktop ./machines/mynix];
myork = unstable "x86_64" [./profiles/laptop ./machines/myork];
};
};
}

267
flake.lock generated
View file

@ -30,11 +30,11 @@
]
},
"locked": {
"lastModified": 1727449354,
"narHash": "sha256-iQki21EbLc9+cxh0c1sZA3Y80mBHYWMNcT/33EVeJsE=",
"lastModified": 1728026888,
"narHash": "sha256-VI8WiQy9xC6kQn5ILSh8k38Ichcbqjeje1jriICo+aI=",
"owner": "ezKEa",
"repo": "aagl-gtk-on-nix",
"rev": "5a1bc8dcc6a73e1d64b9291c9c466a637746e6cf",
"rev": "7f7b8a654dac5117db22b97a01d3975acdb359b4",
"type": "github"
},
"original": {
@ -129,11 +129,11 @@
]
},
"locked": {
"lastModified": 1725199881,
"narHash": "sha256-jsmipf/u1GFZE5tBUkr56CHMN6VpUWCAjfLIhvQijU0=",
"lastModified": 1727261104,
"narHash": "sha256-rxDI7WrxIRV9it9mDCHcLa7xQykf1JloXnoXr5xQ8zI=",
"owner": "hyprwm",
"repo": "aquamarine",
"rev": "f8a687dd29ff019657498f1bd14da2fbbf0e604b",
"rev": "b82fdaff917582a9d568969e15e61b398c71e990",
"type": "github"
},
"original": {
@ -169,16 +169,17 @@
"inputs": {
"crane": "crane",
"flake-compat": "flake-compat_3",
"flake-parts": "flake-parts_4",
"flake-utils": "flake-utils_2",
"nixpkgs": "nixpkgs",
"nixpkgs-stable": "nixpkgs-stable"
},
"locked": {
"lastModified": 1724226964,
"narHash": "sha256-cltFh4su2vcFidxKp7LuEgX3ZGLfPy0DCdrQZ/QTe68=",
"lastModified": 1725300620,
"narHash": "sha256-IdM+pZ6BnmD3o1fTJZ2BD43k7dwi1BbVfLDLpM1nE5s=",
"owner": "zhaofengli",
"repo": "attic",
"rev": "6d9aeaef0a067d664cb11bb7704f7ec373d47fb2",
"rev": "bea72d75b6165dfb529ba0c39cc6c7e9c7f0d234",
"type": "github"
},
"original": {
@ -269,11 +270,11 @@
"complement": {
"flake": false,
"locked": {
"lastModified": 1722323564,
"narHash": "sha256-6w6/N8walz4Ayc9zu7iySqJRmGFukhkaICLn4dweAcA=",
"lastModified": 1724347376,
"narHash": "sha256-y0e/ULDJ92IhNQZsS/06g0s+AYZ82aJfrIO9qEse94c=",
"owner": "matrix-org",
"repo": "complement",
"rev": "6e4426a9e63233f9821a4d2382bfed145244183f",
"rev": "39733c1b2f8314800776748cc7164f9a34650686",
"type": "github"
},
"original": {
@ -321,11 +322,11 @@
"rocksdb": "rocksdb"
},
"locked": {
"lastModified": 1725209064,
"narHash": "sha256-ut3IWEueNR/hT7NyGfuK5IYtppC6ArSoJdEfFuD/0vE=",
"lastModified": 1726444589,
"narHash": "sha256-dWKVjS4wvyZxRjhUICTnnw8mHYwJij4SGvXIG/U5oRo=",
"owner": "Myned",
"repo": "conduwuit",
"rev": "8f7ade4c22533a3177bfd8f175e178573ba6c1d4",
"rev": "032b199129f8648a77bde285f755a78e9ec349a7",
"type": "github"
},
"original": {
@ -357,18 +358,12 @@
}
},
"crane_2": {
"inputs": {
"nixpkgs": [
"conduwuit",
"nixpkgs"
]
},
"locked": {
"lastModified": 1724006180,
"narHash": "sha256-PVxPj0Ga2fMYMtcT9ARCthF+4U71YkOT7ZjgD/vf1Aw=",
"lastModified": 1725409566,
"narHash": "sha256-PrtLmqhM6UtJP7v7IGyzjBFhbG4eOAHT6LPYOFmYfbk=",
"owner": "ipetkov",
"repo": "crane",
"rev": "7ce92819802bc583b7e82ebc08013a530f22209f",
"rev": "7e4586bad4e3f8f97a9271def747cf58c4b68f3c",
"type": "github"
},
"original": {
@ -476,11 +471,11 @@
]
},
"locked": {
"lastModified": 1727531434,
"narHash": "sha256-b+GBgCWd2N6pkiTkRZaMFOPztPO4IVTaclYPrQl2uLk=",
"lastModified": 1728109432,
"narHash": "sha256-wmbErh8FG7dRKOtMMpHUqDtFjeqt9Zjx4zssSeTalwU=",
"owner": "nix-community",
"repo": "disko",
"rev": "b709e1cc33fcde71c7db43850a55ebe6449d0959",
"rev": "48ebb577855fb2398653f033b3b2208a9249203d",
"type": "github"
},
"original": {
@ -498,11 +493,11 @@
"rust-analyzer-src": "rust-analyzer-src"
},
"locked": {
"lastModified": 1724221791,
"narHash": "sha256-mKX67QPnUybOopVph/LhOV1G/H4EvPxDIfSmbufrVdA=",
"lastModified": 1725690497,
"narHash": "sha256-5fT+96rV7Hx29HG+4/oBbr3V+yExKuLN2vcBcPbVBlU=",
"owner": "nix-community",
"repo": "fenix",
"rev": "e88b38a5a3834e039d413a88f8150a75ef6453ef",
"rev": "4b8d964df93d1f918ee6c4f003b3548c432cc866",
"type": "github"
},
"original": {
@ -722,6 +717,28 @@
}
},
"flake-parts_4": {
"inputs": {
"nixpkgs-lib": [
"conduwuit",
"attic",
"nixpkgs"
]
},
"locked": {
"lastModified": 1722555600,
"narHash": "sha256-XOQkdLafnb/p9ij77byFQjDf5m5QYl9b2REiVClC+x4=",
"owner": "hercules-ci",
"repo": "flake-parts",
"rev": "8471fe90ad337a8074e957b69ca4d0089218391d",
"type": "github"
},
"original": {
"owner": "hercules-ci",
"repo": "flake-parts",
"type": "github"
}
},
"flake-parts_5": {
"inputs": {
"nixpkgs-lib": "nixpkgs-lib"
},
@ -739,7 +756,7 @@
"type": "github"
}
},
"flake-parts_5": {
"flake-parts_6": {
"inputs": {
"nixpkgs-lib": [
"walker",
@ -1042,11 +1059,11 @@
]
},
"locked": {
"lastModified": 1727383923,
"narHash": "sha256-4/vacp3CwdGoPf8U4e/N8OsGYtO09WTcQK5FqYfJbKs=",
"lastModified": 1728041527,
"narHash": "sha256-03liqiJtk9UP7YQHW4r8MduKCK242FQzud8iWvvlK+o=",
"owner": "nix-community",
"repo": "home-manager",
"rev": "ffe2d07e771580a005e675108212597e5b367d2d",
"rev": "509dbf8d45606b618e9ec3bbe4e936b7c5bc6c1e",
"type": "github"
},
"original": {
@ -1071,11 +1088,11 @@
]
},
"locked": {
"lastModified": 1722623071,
"narHash": "sha256-sLADpVgebpCBFXkA1FlCXtvEPu1tdEsTfqK1hfeHySE=",
"lastModified": 1727532803,
"narHash": "sha256-ZaZ7h7PY8mQc4vtGmVqWLAq9CAO02gHMyNR5yY8zDmM=",
"owner": "hyprwm",
"repo": "hyprcursor",
"rev": "912d56025f03d41b1ad29510c423757b4379eb1c",
"rev": "b98726e431d4d3ed58bd58bee1047cdb81cec69f",
"type": "github"
},
"original": {
@ -1111,6 +1128,7 @@
"inputs": {
"aquamarine": "aquamarine",
"hyprcursor": "hyprcursor",
"hyprland-protocols": "hyprland-protocols",
"hyprlang": "hyprlang_2",
"hyprutils": "hyprutils_2",
"hyprwayland-scanner": "hyprwayland-scanner",
@ -1121,17 +1139,17 @@
"xdph": "xdph"
},
"locked": {
"lastModified": 1725814101,
"narHash": "sha256-+wE97utoDfhQP6AMdZHUmBeL8grbce/Jv2i5M+6AbaE=",
"ref": "refs/tags/v0.43.0",
"rev": "0f594732b063a90d44df8c5d402d658f27471dfe",
"revCount": 5196,
"lastModified": 1728212653,
"narHash": "sha256-XgDhPx+tKs+2lyWM/ZqIHnMArd/c0LGmwAwu0EG1uJM=",
"ref": "refs/tags/v0.44.0",
"rev": "0c7a7e2d569eeed9d6025f3eef4ea0690d90845d",
"revCount": 5299,
"submodules": true,
"type": "git",
"url": "https://github.com/hyprwm/Hyprland"
},
"original": {
"ref": "refs/tags/v0.43.0",
"ref": "refs/tags/v0.44.0",
"submodules": true,
"type": "git",
"url": "https://github.com/hyprwm/Hyprland"
@ -1188,6 +1206,31 @@
}
},
"hyprland-protocols": {
"inputs": {
"nixpkgs": [
"hyprland",
"nixpkgs"
],
"systems": [
"hyprland",
"systems"
]
},
"locked": {
"lastModified": 1727451107,
"narHash": "sha256-qV9savtHwmZUa0eJE294WYJjKPGB2+bJhwByFShsVyo=",
"owner": "hyprwm",
"repo": "hyprland-protocols",
"rev": "6b3261ee13a6d2b99de79a31d352f6996e35bde3",
"type": "github"
},
"original": {
"owner": "hyprwm",
"repo": "hyprland-protocols",
"type": "github"
}
},
"hyprland-protocols_2": {
"inputs": {
"nixpkgs": [
"hyprland",
@ -1259,11 +1302,11 @@
]
},
"locked": {
"lastModified": 1725188252,
"narHash": "sha256-yBH8c4GDaEAtBrh+BqIlrx5vp6gG/Gu8fQQK63KAQgs=",
"lastModified": 1725997860,
"narHash": "sha256-d/rZ/fHR5l1n7PeyLw0StWMNLXVU9c4HFyfskw568so=",
"owner": "hyprwm",
"repo": "hyprlang",
"rev": "c12ab785ce1982f82594aff03b3104c598186ddd",
"rev": "dfeb5811dd6485490cce18d6cc1e38a055eea876",
"type": "github"
},
"original": {
@ -1340,11 +1383,11 @@
"systems": "systems_10"
},
"locked": {
"lastModified": 1727695344,
"narHash": "sha256-lQYfVILqK+b+XPwaQeGSA0tAKDajVqUoP719ZifIEh8=",
"lastModified": 1728135019,
"narHash": "sha256-OCUyEfD9g5232OILgW+BpjFVPM8AHl2WM59yRabJvSE=",
"owner": "hyprwm",
"repo": "hyprlock",
"rev": "d9c2a5e0b790bfd1bdc7ab39ce188bcc5519b1b4",
"rev": "eb63207ef051c62fa2ab010b3f89da263a397329",
"type": "github"
},
"original": {
@ -1437,11 +1480,11 @@
]
},
"locked": {
"lastModified": 1724966483,
"narHash": "sha256-WXDgKIbzjYKczxSZOsJplCS1i1yrTUpsDPuJV/xpYLo=",
"lastModified": 1727300645,
"narHash": "sha256-OvAtVLaSRPnbXzOwlR1fVqCXR7i+ICRX3aPMCdIiv+c=",
"owner": "hyprwm",
"repo": "hyprutils",
"rev": "8976e3f6a5357da953a09511d0c7f6a890fb6ec2",
"rev": "3f5293432b6dc6a99f26aca2eba3876d2660665c",
"type": "github"
},
"original": {
@ -1537,11 +1580,11 @@
]
},
"locked": {
"lastModified": 1721324119,
"narHash": "sha256-SOOqIT27/X792+vsLSeFdrNTF+OSRp5qXv6Te+fb2Qg=",
"lastModified": 1726874836,
"narHash": "sha256-VKR0sf0PSNCB0wPHVKSAn41mCNVCnegWmgkrneKDhHM=",
"owner": "hyprwm",
"repo": "hyprwayland-scanner",
"rev": "a048a6cb015340bd82f97c1f40a4b595ca85cc30",
"rev": "500c81a9e1a76760371049a8d99e008ea77aa59e",
"type": "github"
},
"original": {
@ -1608,11 +1651,11 @@
]
},
"locked": {
"lastModified": 1727453186,
"narHash": "sha256-nZRCfVEZ9osWXsCD0xCpU66M8JkabMTukBzPRrD/CTA=",
"lastModified": 1728183036,
"narHash": "sha256-aq8i8LCbbo2gIBcFiMTFxyE4fdAKrjFU1c//zZn0bZM=",
"owner": "Jovian-Experiments",
"repo": "Jovian-NixOS",
"rev": "3390ff2632d0d8a14c92473db60fa52bf881f979",
"rev": "751641e82a34709ed2a177e69e23b1ea08a75561",
"type": "github"
},
"original": {
@ -1624,11 +1667,11 @@
"liburing": {
"flake": false,
"locked": {
"lastModified": 1724199144,
"narHash": "sha256-MVjnwO6EbKzzSrU51dSseLarZ1fRp+6SagAf/nE/XZU=",
"lastModified": 1725659644,
"narHash": "sha256-WjnpmopfvFoUbubIu9bki+Y6P4YXDfvnW4+72hniq3g=",
"owner": "axboe",
"repo": "liburing",
"rev": "2d4e799017d64cd2f8304503eef9064931bb3fbd",
"rev": "0fe5c09195c0918f89582dd6ff098a58a0bdf62a",
"type": "github"
},
"original": {
@ -1769,11 +1812,11 @@
]
},
"locked": {
"lastModified": 1727658919,
"narHash": "sha256-YAePt2GldkkRJ08LvZNHcuS6shIVStj+K+1DZN3gbnM=",
"lastModified": 1728185226,
"narHash": "sha256-W+wWyNjFywVfFrbErXhGwgO2HlR0yMHqd1doEEbW9yw=",
"owner": "nix-community",
"repo": "nix-index-database",
"rev": "f9fdf8285690a351e8998f1e703ebdf9cdf51dee",
"rev": "0f7169d3ec7ef1477af6e39731e67a1dc7a9f6e7",
"type": "github"
},
"original": {
@ -1789,11 +1832,11 @@
]
},
"locked": {
"lastModified": 1727658919,
"narHash": "sha256-YAePt2GldkkRJ08LvZNHcuS6shIVStj+K+1DZN3gbnM=",
"lastModified": 1728185226,
"narHash": "sha256-W+wWyNjFywVfFrbErXhGwgO2HlR0yMHqd1doEEbW9yw=",
"owner": "nix-community",
"repo": "nix-index-database",
"rev": "f9fdf8285690a351e8998f1e703ebdf9cdf51dee",
"rev": "0f7169d3ec7ef1477af6e39731e67a1dc7a9f6e7",
"type": "github"
},
"original": {
@ -1834,11 +1877,11 @@
]
},
"locked": {
"lastModified": 1727660984,
"narHash": "sha256-jgusy1DsdNX5KRZOQ/DonKoMshcDMZ17dAc0eVlNTS8=",
"lastModified": 1728179514,
"narHash": "sha256-mOGZFPYm9SuEXnYiXhgs/JmLu7RofRaMpAYyJiWudkc=",
"owner": "nix-community",
"repo": "nix-vscode-extensions",
"rev": "6b2d41c8e20f8eb9f969ec4bd851b036ae688e14",
"rev": "018196c371073d669510fd69dd2f6dc0ec608c41",
"type": "github"
},
"original": {
@ -1880,7 +1923,7 @@
},
"nixd": {
"inputs": {
"flake-parts": "flake-parts_4",
"flake-parts": "flake-parts_5",
"flake-root": "flake-root",
"nixpkgs": [
"nixpkgs-unstable"
@ -1888,11 +1931,11 @@
"treefmt-nix": "treefmt-nix"
},
"locked": {
"lastModified": 1727483856,
"narHash": "sha256-IJgLtPwhTbcWUDIoe/UFZbegikzgivZBB5LuMp3k4Cs=",
"lastModified": 1727793617,
"narHash": "sha256-vZ+t0jvKZczYBB9ZAj7CQ1sBv9PE66G9/LkB6a+Iogg=",
"owner": "nix-community",
"repo": "nixd",
"rev": "e5e144f59c2f47014666ef6f6e32fae7c29b854d",
"rev": "c38702b17580a31e84c958b5feed3d8c7407f975",
"type": "github"
},
"original": {
@ -1903,11 +1946,11 @@
},
"nixos-hardware": {
"locked": {
"lastModified": 1727665282,
"narHash": "sha256-oKtfbQB1MBypqIyzkC8QCQcVGOa1soaXaGgcBIoh14o=",
"lastModified": 1728056216,
"narHash": "sha256-IrO06gFUDTrTlIP3Sz+mRB6WUoO2YsgMtOD3zi0VEt0=",
"owner": "NixOS",
"repo": "nixos-hardware",
"rev": "11c43c830e533dad1be527ecce379fcf994fbbb5",
"rev": "b7ca02c7565fbf6d27ff20dd6dbd49c5b82eef28",
"type": "github"
},
"original": {
@ -1918,11 +1961,11 @@
},
"nixpkgs": {
"locked": {
"lastModified": 1723827930,
"narHash": "sha256-EU+W5F6y2CVNxGrGIMpY7nSVYq72WRChYxF4zpjx0y4=",
"lastModified": 1724999960,
"narHash": "sha256-LB3jqSGW5u1ZcUcX6vO/qBOq5oXHlmOCxsTXGMEitp4=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "d4a7a4d0e066278bfb0d77bd2a7adde1c0ec9e3d",
"rev": "b96f849e725333eb2b1c7f1cb84ff102062468ba",
"type": "github"
},
"original": {
@ -1984,16 +2027,16 @@
},
"nixpkgs-stable": {
"locked": {
"lastModified": 1720535198,
"narHash": "sha256-zwVvxrdIzralnSbcpghA92tWu2DV2lwv89xZc8MTrbg=",
"lastModified": 1724316499,
"narHash": "sha256-Qb9MhKBUTCfWg/wqqaxt89Xfi6qTD3XpTzQ9eXi3JmE=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "205fd4226592cc83fd4c0885a3e4c9c400efabb5",
"rev": "797f7dc49e0bc7fab4b57c021cdf68f595e47841",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixos-23.11",
"ref": "nixos-24.05",
"repo": "nixpkgs",
"type": "github"
}
@ -2016,11 +2059,11 @@
},
"nixpkgs-stable_3": {
"locked": {
"lastModified": 1727540905,
"narHash": "sha256-40J9tW7Y794J7Uw4GwcAKlMxlX2xISBl6IBigo83ih8=",
"lastModified": 1728193676,
"narHash": "sha256-PbDWAIjKJdlVg+qQRhzdSor04bAPApDqIv2DofTyynk=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "fbca5e745367ae7632731639de5c21f29c8744ed",
"rev": "ecbc1ca8ffd6aea8372ad16be9ebbb39889e55b6",
"type": "github"
},
"original": {
@ -2032,11 +2075,11 @@
},
"nixpkgs-staging-next": {
"locked": {
"lastModified": 1727731257,
"narHash": "sha256-nXnsrLv8bELJehkhjiNHRUbNzi2VSL6CHTTlKz5JZZI=",
"lastModified": 1728216315,
"narHash": "sha256-1OC1AfYGIaKGxukF6QVAjRkVRRb/O6vG3fqSI/CCCBU=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "78b848881f3b58b3c04c005a7999800d013fa9b7",
"rev": "5c3e5ec59f9fd4b423187829fdd83347c135f1ec",
"type": "github"
},
"original": {
@ -2048,11 +2091,11 @@
},
"nixpkgs-unstable": {
"locked": {
"lastModified": 1727634051,
"narHash": "sha256-S5kVU7U82LfpEukbn/ihcyNt2+EvG7Z5unsKW9H/yFA=",
"lastModified": 1728018373,
"narHash": "sha256-NOiTvBbRLIOe5F6RbHaAh6++BNjsb149fGZd1T4+KBg=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "06cf0e1da4208d3766d898b7fdab6513366d45b9",
"rev": "bc947f541ae55e999ffdb4013441347d83b00feb",
"type": "github"
},
"original": {
@ -2146,16 +2189,16 @@
"rocksdb": {
"flake": false,
"locked": {
"lastModified": 1724285323,
"narHash": "sha256-k60kreKQ0v+bQ16yBd2SfLYpuNjMw2qoRmZL/S3k6CU=",
"lastModified": 1725811807,
"narHash": "sha256-k6aubvLSJwW7CtIxBRSlM6Z8UiJDCdFUgDWPYLV47Qk=",
"owner": "girlbossceo",
"repo": "rocksdb",
"rev": "5a67ad7ce46328578ee5587fb0c23faa03d14e67",
"rev": "347d50e212b24d98b5ad9841404ff80c1bb873f0",
"type": "github"
},
"original": {
"owner": "girlbossceo",
"ref": "v9.5.2",
"ref": "v9.6.1",
"repo": "rocksdb",
"type": "github"
}
@ -2204,11 +2247,11 @@
"rust-analyzer-src": {
"flake": false,
"locked": {
"lastModified": 1724153119,
"narHash": "sha256-WxpvDJDttkINkXmUA/W5o11lwLPYhATAgu0QUAacZ2g=",
"lastModified": 1725630423,
"narHash": "sha256-gNCLk3Zg7JlAwmWbVHTH6f3+iqdeQ4fheOotCZy8x5M=",
"owner": "rust-lang",
"repo": "rust-analyzer",
"rev": "3723e5910c14f0ffbd13de474b8a8fcc74db04ce",
"rev": "08c7bbc2dbe4dcc8968484f1a0e1e6fe7a1d4f6d",
"type": "github"
},
"original": {
@ -2221,11 +2264,11 @@
"steamtinkerlaunch": {
"flake": false,
"locked": {
"lastModified": 1725469657,
"narHash": "sha256-Z4tO5oymzp1KKN1ak10GsYLNI4hJh9MD3/l9vtLLCss=",
"lastModified": 1727897718,
"narHash": "sha256-kE+/7yvjK5jMFSk2Ve7SdTJC0geaqVEwxZ1m9gMwOuw=",
"owner": "sonic2kk",
"repo": "steamtinkerlaunch",
"rev": "c174a06f1b98d2aa523fe93e2afaed2713f46563",
"rev": "6e5aba78c03e7e473dec243df5270bfc164613b6",
"type": "github"
},
"original": {
@ -2480,7 +2523,7 @@
},
"walker": {
"inputs": {
"flake-parts": "flake-parts_5",
"flake-parts": "flake-parts_6",
"nixpkgs": [
"nixpkgs-unstable"
]
@ -2501,11 +2544,19 @@
},
"xdph": {
"inputs": {
"hyprland-protocols": "hyprland-protocols",
"hyprland-protocols": "hyprland-protocols_2",
"hyprlang": [
"hyprland",
"hyprlang"
],
"hyprutils": [
"hyprland",
"hyprutils"
],
"hyprwayland-scanner": [
"hyprland",
"hyprwayland-scanner"
],
"nixpkgs": [
"hyprland",
"nixpkgs"
@ -2516,11 +2567,11 @@
]
},
"locked": {
"lastModified": 1725203932,
"narHash": "sha256-VLULC/OnI+6R9KEP2OIGk+uLJJsfRlaLouZ5gyFd2+Y=",
"lastModified": 1727524473,
"narHash": "sha256-1DGktDtSWIJpnDbVoj/qpvJSH5zg6JbOfuh6xqZMap0=",
"owner": "hyprwm",
"repo": "xdg-desktop-portal-hyprland",
"rev": "2425e8f541525fa7409d9f26a8ffaf92a3767251",
"rev": "7e500e679ede40e79cf2d89b5f5fa3e34923bd26",
"type": "github"
},
"original": {

View file

@ -65,7 +65,7 @@
};
hyprland = {
inputs.nixpkgs.follows = "nixpkgs-unstable";
url = "git+https://github.com/hyprwm/Hyprland?ref=refs/tags/v0.43.0&submodules=1";
url = "git+https://github.com/hyprwm/Hyprland?ref=refs/tags/v0.44.0&submodules=1";
};
hyprland-contrib = {
inputs.nixpkgs.follows = "nixpkgs-unstable";

View file

@ -4,9 +4,9 @@
...
}:
with lib; let
cfg = config.custom.settings.containers.actualbudget;
cfg = config.custom.containers.actualbudget;
in {
options.custom.settings.containers.actualbudget.enable = mkOption {default = false;};
options.custom.containers.actualbudget.enable = mkOption {default = false;};
config = mkIf cfg.enable {
#?? arion-actualbudget pull
@ -21,7 +21,7 @@ in {
image = "actualbudget/actual-server:24.9.0";
ports = ["5006:5006"];
restart = "unless-stopped";
volumes = ["${config.custom.settings.containers.directory}/actualbudget/data:/data"];
volumes = ["${config.custom.containers.directory}/actualbudget/data:/data"];
# TODO: Set up trusted proxies
};
};

View file

@ -5,9 +5,9 @@
...
}:
with lib; let
cfg = config.custom.settings.containers.coturn;
cfg = config.custom.containers.coturn;
in {
options.custom.settings.containers.coturn.enable = mkOption {default = false;};
options.custom.containers.coturn.enable = mkOption {default = false;};
config = mkIf cfg.enable {
age.secrets = let
@ -33,7 +33,7 @@ in {
restart = "unless-stopped";
volumes = [
"${config.custom.settings.containers.directory}/coturn/coturn.conf:/etc/coturn/turnserver.conf"
"${config.custom.containers.directory}/coturn/coturn.conf:/etc/coturn/turnserver.conf"
];
};
};
@ -43,7 +43,7 @@ in {
# HACK: Copy with global read-only permissions in container directory which is assumed to be locked down
# https://github.com/moby/moby/issues/2259
systemd.tmpfiles.rules = [
"C ${config.custom.settings.containers.directory}/coturn/coturn.conf 0444 - - - ${
"C ${config.custom.containers.directory}/coturn/coturn.conf 0444 - - - ${
config.age.secrets."${config.custom.profile}/coturn/coturn.conf".path
}"
];

View file

@ -6,10 +6,10 @@
...
}:
with lib; let
cfg = config.custom.settings.containers;
cfg = config.custom.containers;
in {
options.custom.settings.containers = {
enable = mkOption {default = false;};
options.custom.containers = {
enable = mkOption {default = config.custom.full;};
boot = mkOption {default = false;};
directory = mkOption {default = "/containers";};
docker = mkOption {default = true;};

View file

@ -5,9 +5,9 @@
...
}:
with lib; let
cfg = config.custom.settings.containers.forgejo;
cfg = config.custom.containers.forgejo;
in {
options.custom.settings.containers.forgejo.enable = mkOption {default = false;};
options.custom.containers.forgejo.enable = mkOption {default = false;};
config = mkIf cfg.enable {
age.secrets = let
@ -38,7 +38,7 @@ in {
env_file = [config.age.secrets."${config.custom.profile}/forgejo/.env".path];
image = "codeberg.org/forgejo/forgejo:8";
restart = "unless-stopped";
volumes = ["${config.custom.settings.containers.directory}/forgejo/data:/data"];
volumes = ["${config.custom.containers.directory}/forgejo/data:/data"];
ports = [
"127.0.0.1:3333:3000"
@ -51,7 +51,7 @@ in {
env_file = [config.age.secrets."${config.custom.profile}/forgejo/db.env".path];
image = "postgres:15";
restart = "unless-stopped";
volumes = ["${config.custom.settings.containers.directory}/forgejo/db:/var/lib/postgresql/data"];
volumes = ["${config.custom.containers.directory}/forgejo/db:/var/lib/postgresql/data"];
};
};
};

View file

@ -5,9 +5,9 @@
...
}:
with lib; let
cfg = config.custom.settings.containers.foundryvtt;
cfg = config.custom.containers.foundryvtt;
in {
options.custom.settings.containers.foundryvtt.enable = mkOption {default = false;};
options.custom.containers.foundryvtt.enable = mkOption {default = false;};
config = mkIf cfg.enable {
age.secrets = let
@ -31,7 +31,7 @@ in {
image = "felddy/foundryvtt:12";
ports = ["127.0.0.1:30000:30000"];
restart = "unless-stopped";
volumes = ["${config.custom.settings.containers.directory}/foundryvtt/data:/data"];
volumes = ["${config.custom.containers.directory}/foundryvtt/data:/data"];
};
};
};

View file

@ -6,9 +6,9 @@
...
}:
with lib; let
cfg = config.custom.settings.containers.headscale;
cfg = config.custom.containers.headscale;
in {
options.custom.settings.containers.headscale.enable = mkOption {default = false;};
options.custom.containers.headscale.enable = mkOption {default = false;};
config = mkIf cfg.enable {
age.secrets = let
@ -43,8 +43,8 @@ in {
];
volumes = [
"${config.custom.settings.containers.directory}/headscale/config:/etc/headscale"
"${config.custom.settings.containers.directory}/headscale/data:/var/lib/headscale"
"${config.custom.containers.directory}/headscale/config:/etc/headscale"
"${config.custom.containers.directory}/headscale/data:/var/lib/headscale"
# Minimum config.yaml
# https://github.com/juanfont/headscale/blob/main/config-example.yaml

View file

@ -4,9 +4,9 @@
...
}:
with lib; let
cfg = config.custom.settings.containers.homeassistant;
cfg = config.custom.containers.homeassistant;
in {
options.custom.settings.containers.homeassistant.enable = mkOption {default = false;};
options.custom.containers.homeassistant.enable = mkOption {default = false;};
config = mkIf cfg.enable {
#?? arion-homeassistant pull
@ -21,7 +21,7 @@ in {
image = "homeassistant/home-assistant:2024.9.1";
ports = ["8123:8123"];
restart = "unless-stopped";
volumes = ["${config.custom.settings.containers.directory}/homeassistant/config:/config"];
volumes = ["${config.custom.containers.directory}/homeassistant/config:/config"];
};
};
};

View file

@ -5,9 +5,9 @@
...
}:
with lib; let
cfg = config.custom.settings.containers.mastodon;
cfg = config.custom.containers.mastodon;
in {
options.custom.settings.containers.mastodon.enable = mkOption {default = false;};
options.custom.containers.mastodon.enable = mkOption {default = false;};
config = mkIf cfg.enable {
age.secrets = let
@ -34,7 +34,7 @@ in {
image = "lscr.io/linuxserver/mastodon:4.2.12";
ports = ["3000:443"];
restart = "unless-stopped";
volumes = ["${config.custom.settings.containers.directory}/mastodon/config:/config"];
volumes = ["${config.custom.containers.directory}/mastodon/config:/config"];
depends_on = [
"cache"
@ -46,7 +46,7 @@ in {
container_name = "mastodon-cache";
image = "redis:latest";
restart = "unless-stopped";
volumes = ["${config.custom.settings.containers.directory}/mastodon/cache:/data"];
volumes = ["${config.custom.containers.directory}/mastodon/cache:/data"];
};
db.service = {
@ -54,7 +54,7 @@ in {
env_file = [config.age.secrets."${config.custom.profile}/mastodon/db.env".path];
image = "postgres:15";
restart = "unless-stopped";
volumes = ["${config.custom.settings.containers.directory}/mastodon/db:/var/lib/postgresql/data"];
volumes = ["${config.custom.containers.directory}/mastodon/db:/var/lib/postgresql/data"];
};
};
};

View file

@ -0,0 +1,5 @@
# TODO: Upgrade to v4.1 when supported by netbox-acls
FROM docker.io/netboxcommunity/netbox:v4.0.11
COPY ./plugin_requirements.txt /opt/netbox/
RUN /opt/netbox/venv/bin/pip install --no-warn-script-location -r /opt/netbox/plugin_requirements.txt

View file

@ -0,0 +1,88 @@
{
config,
inputs,
lib,
...
}:
with lib; let
cfg = config.custom.containers.netbox;
in {
options.custom.containers.netbox.enable = mkOption {default = false;};
config = mkIf cfg.enable {
age.secrets = let
secret = filename: {
file = "${inputs.self}/secrets/${filename}";
};
in {
"${config.custom.profile}/netbox/.env" = secret "${config.custom.profile}/netbox/.env";
"${config.custom.profile}/netbox/cache.env" = secret "${config.custom.profile}/netbox/cache.env";
"${config.custom.profile}/netbox/db.env" = secret "${config.custom.profile}/netbox/db.env";
};
#?? arion-netbox pull
environment.shellAliases.arion-netbox = "sudo arion --prebuilt-file ${config.virtualisation.arion.projects.netbox.settings.out.dockerComposeYaml}";
# https://github.com/netbox-community/netbox-docker
virtualisation.arion.projects.netbox = {
serviceName = "netbox";
# https://github.com/netbox-community/netbox-docker/blob/release/docker-compose.yml
settings.services = let
netbox = {
container_name = "netbox";
depends_on = ["cache" "db"];
env_file = [config.age.secrets."${config.custom.profile}/netbox/.env".path];
restart = "unless-stopped";
volumes = ["${./extra.py}:/etc/netbox/config/extra.py"];
# https://github.com/netbox-community/netbox-docker/wiki/Using-Netbox-Plugins
#!! Context modifications require a rebuild
#?? arion-netbox build
build.context = "${./.}";
};
in {
netbox.service =
netbox
// {
ports = ["8585:8080"];
};
housekeeping.service =
netbox
// {
container_name = "netbox-housekeeping";
command = ["/opt/netbox/housekeeping.sh"];
depends_on = ["netbox"];
};
worker.service =
netbox
// {
container_name = "netbox-worker";
command = ["/opt/netbox/venv/bin/python" "/opt/netbox/netbox/manage.py" "rqworker"];
depends_on = ["netbox"];
};
cache.service = {
container_name = "netbox-cache";
command = ["sh" "-c" "valkey-server --requirepass $$REDIS_PASSWORD"];
env_file = [config.age.secrets."${config.custom.profile}/netbox/cache.env".path];
image = "docker.io/valkey/valkey:8.0";
restart = "unless-stopped";
};
db.service = {
container_name = "netbox-db";
env_file = [config.age.secrets."${config.custom.profile}/netbox/db.env".path];
image = "docker.io/postgres:16";
restart = "unless-stopped";
volumes = [
"${config.custom.containers.directory}/netbox/db:/var/lib/postgresql/data"
];
};
};
};
};
}

View file

@ -0,0 +1,32 @@
# https://github.com/netbox-community/netbox-docker/blob/release/configuration/extra.py
CENSUS_REPORTING_ENABLED = False
LOGIN_PERSISTENCE = True
# BUG: pynetbox does not send token with version requests
# https://github.com/netbox-community/Device-Type-Library-Import/issues/134
# https://github.com/netbox-community/pynetbox/pull/641
LOGIN_REQUIRED = True
TIME_ZONE = "America/Chicago"
PLUGINS = [
"netbox_acls",
"netbox_attachments",
"netbox_dns",
"netbox_interface_synchronization",
"netbox_lists",
"netbox_otp_plugin",
"netbox_reorder_rack",
# // "netbox_routing",
"netbox_secrets",
"netbox_topology_views",
"slurpit_netbox",
]
PLUGINS_CONFIG = {
"netbox_acls": {"top_level_menu": True},
"netbox_otp_plugin": {"otp_required": False},
"netbox_secrets": {"top_level_menu": True},
"netbox_topology_views": {"allow_coordinates_saving": True},
}

View file

@ -0,0 +1,11 @@
netbox-acls == 1.6.* # https://github.com/netbox-community/netbox-acls
netbox-attachments == 5.1.* # https://github.com/Kani999/netbox-attachments
netbox-interface-synchronization == 4.0.* # https://github.com/NetTech2001/netbox-interface-synchronization
netbox-lists == 4.0.* # https://github.com/devon-mar/netbox-lists
netbox-otp-plugin == 1.3.* # https://github.com/k1nky/netbox-otp-plugin
netbox-plugin-dns == 1.1.* # https://github.com/peteeckel/netbox-plugin-dns
netbox-reorder-rack == 1.1.* # https://github.com/netbox-community/netbox-reorder-rack
#// netbox-routing # https://github.com/DanSheps/netbox-routing
netbox-secrets == 2.0.* # https://github.com/Onemind-Services-LLC/netbox-secrets
netbox-topology-views == 4.0.* # https://github.com/netbox-community/netbox-topology-views
slurpit_netbox == 0.9.* # https://gitlab.com/slurpit.io/slurpit-netbox

View file

@ -5,9 +5,9 @@
...
}:
with lib; let
cfg = config.custom.settings.containers.nextcloud;
cfg = config.custom.containers.nextcloud;
in {
options.custom.settings.containers.nextcloud.enable = mkOption {default = false;};
options.custom.containers.nextcloud.enable = mkOption {default = false;};
config = mkIf cfg.enable {
age.secrets = let
@ -35,8 +35,8 @@ in {
restart = "unless-stopped";
volumes = [
"${config.custom.settings.containers.directory}/nextcloud/app:/var/www/html"
"${config.custom.settings.containers.directory}/nextcloud/data:/var/www/html/data"
"${config.custom.containers.directory}/nextcloud/app:/var/www/html"
"${config.custom.containers.directory}/nextcloud/data:/var/www/html/data"
];
depends_on = [
@ -63,7 +63,7 @@ in {
container_name = "nextcloud-cache";
image = "redis:latest";
restart = "unless-stopped";
volumes = ["${config.custom.settings.containers.directory}/nextcloud/cache:/data"];
volumes = ["${config.custom.containers.directory}/nextcloud/cache:/data"];
};
db.service = {
@ -73,7 +73,7 @@ in {
restart = "unless-stopped";
volumes = [
"${config.custom.settings.containers.directory}/nextcloud/db:/var/lib/postgresql/data"
"${config.custom.containers.directory}/nextcloud/db:/var/lib/postgresql/data"
];
};
};

View file

@ -4,9 +4,9 @@
...
}:
with lib; let
cfg = config.custom.settings.containers.redlib;
cfg = config.custom.containers.redlib;
in {
options.custom.settings.containers.redlib.enable = mkOption {default = false;};
options.custom.containers.redlib.enable = mkOption {default = false;};
config = mkIf cfg.enable {
#?? arion-redlib pull

View file

@ -5,9 +5,9 @@
...
}:
with lib; let
cfg = config.custom.settings.containers.searxng;
cfg = config.custom.containers.searxng;
in {
options.custom.settings.containers.searxng.enable = mkOption {default = false;};
options.custom.containers.searxng.enable = mkOption {default = false;};
config = mkIf cfg.enable {
age.secrets = let

View file

@ -191,7 +191,7 @@ in {
(key "Up" "Super" "movewindow" "u")
(key "Up" "Super+Shift" "movewindoworgroup" "u")
(key "0" "Super" "exec" "${audio} --bypass")
(key "0" "Super" "exec" "${audio}")
(key "0" "Super+Shift" "exec" "${zoom}")
(key "1" "Ctrl+Alt" "exec" "lifx state --brightness 0.01")
(key "1" "Super" "workspace" "1")

View file

@ -62,7 +62,6 @@ in {
ms-python.black-formatter
ms-python.debugpy
ms-python.isort
ms-python.python
natizyskunk.sftp
pkief.material-icon-theme
pkief.material-product-icons
@ -72,10 +71,11 @@ in {
vincaslt.highlight-matching-tag
]
++ (with (repo "vscode-marketplace"); [
# Some extensions go missing from open-vsx, so use official marketplace as fallback
#!! Some extensions go missing from open-vsx, so use official marketplace as fallback
# https://github.com/nix-community/nix-vscode-extensions?tab=readme-ov-file#note
bodil.blueprint-gtk
cormoran.disable-default-keybinding
ms-python.python
sirmspencer.vscode-autohide
]);
};

View file

@ -13,32 +13,35 @@ in {
# https://gitlab.com/samba-team/samba
#!! User configuration is imperative
#?? sudo smbpasswd -a $USER
services.samba = {
enable = true;
openFirewall = true;
nmbd.enable = false;
nsswins = false;
services.samba =
if (versionAtLeast version "24.11")
then {
enable = true;
nmbd.enable = false;
nsswins = false;
openFirewall = true;
# https://www.samba.org/samba/docs/current/man-html/smb.conf.5.html
settings = {
Public.path = "/home/${config.custom.username}/Public";
SYNC.path = "/home/${config.custom.username}/SYNC";
# https://www.samba.org/samba/docs/current/man-html/smb.conf.5.html
settings = {
Public.path = "/home/${config.custom.username}/Public";
SYNC.path = "/home/${config.custom.username}/SYNC";
global = {
"allow insecure wide links" = "yes";
"browseable" = "no";
"follow symlinks" = "yes";
"force user" = config.custom.username;
"hostname lookups" = "yes";
"hosts allow" = "192.168.111.";
"inherit owner" = "unix only";
"inherit permissions" = "yes";
"logging" = "systemd";
"map to guest" = "bad password";
"wide links" = "yes";
"writeable" = "yes";
global = {
"allow insecure wide links" = "yes";
"browseable" = "no";
"follow symlinks" = "yes";
"force user" = config.custom.username;
"hostname lookups" = "yes";
"hosts allow" = "192.168.111.";
"inherit owner" = "unix only";
"inherit permissions" = "yes";
"logging" = "systemd";
"map to guest" = "bad password";
"wide links" = "yes";
"writeable" = "yes";
};
};
};
};
}
else {};
};
}

View file

@ -25,7 +25,6 @@ with lib; {
(mkIf config.custom.full {
accounts.enable = true;
containers.enable = true;
vm.enable = true;
waydroid.enable = true;
})

View file

@ -3,6 +3,12 @@
profile = "sbc";
programs.fastfetch.greet = true;
containers = {
enable = true;
boot = true;
homeassistant.enable = true;
};
services = {
tailscale.cert = true;
@ -27,12 +33,6 @@
settings = {
boot.u-boot = true;
networking.wifi = true;
containers = {
enable = true;
boot = true;
homeassistant.enable = true;
};
};
};
}

View file

@ -3,6 +3,21 @@
profile = "server";
programs.fastfetch.greet = true;
containers = {
enable = true;
boot = true;
actualbudget.enable = true;
coturn.enable = true;
forgejo.enable = true;
foundryvtt.enable = true;
#// headscale.enable = true;
mastodon.enable = true;
netbox.enable = true;
nextcloud.enable = true;
redlib.enable = true;
searxng.enable = true;
};
services = {
caddy.enable = true;
matrix-conduit.enable = true;
@ -47,20 +62,6 @@
boot.systemd-boot = true;
mounts.enable = true;
users.myned.linger = true;
containers = {
enable = true;
boot = true;
actualbudget.enable = true;
coturn.enable = true;
forgejo.enable = true;
foundryvtt.enable = true;
#// headscale.enable = true;
mastodon.enable = true;
nextcloud.enable = true;
redlib.enable = true;
searxng.enable = true;
};
};
};
}

View file

@ -75,6 +75,9 @@ in {
"server/mastodon/.env".publicKeys = server;
"server/mastodon/db.env".publicKeys = server;
"server/matrix-conduit/conduwuit.toml".publicKeys = server;
"server/netbox/.env".publicKeys = server;
"server/netbox/cache.env".publicKeys = server;
"server/netbox/db.env".publicKeys = server;
"server/netdata/parent.conf".publicKeys = server;
"server/nextcloud/.env".publicKeys = server;
"server/nextcloud/db.env".publicKeys = server;

Binary file not shown.

BIN
secrets/server/netbox/.env Normal file

Binary file not shown.

Binary file not shown.

View file

@ -0,0 +1,9 @@
age-encryption.org/v1
-> ssh-ed25519 8E6j8Q m8gcV7QJYaY5aXQVfwpeYhHvpRZxB7TyVAQ2PLPKEH4
3CMDnCvJJAoWb+dsiiT+XDDga+J0A1i45ItUloYPLbs
-> ssh-ed25519 sfxzoQ YczqBRqlP8jRn3yvCL67aBtP8l4pbvjaoYJPKXegVRo
AdXDHkqehiUEKGiPb//PEAezWNWCd3RADBlj2s1sgVs
-> ssh-ed25519 fEyKPw 4/iuxqm//a6g6MxWfuG6UnQTIrCJ6TxVYINWoKE2an8
Ot52wghJyc4nwcq4yyIq9r+upVcEDuvaNi/U5uUiH/M
--- mfhw4DBbORqU7oNviE/DNacM5wDC1QzzPxbz7Fw2T0o
3:…*¼}ÅLjb <0C>À†`¨iÙwî§zúë\>Ü9Q¾FTYQoòÃ_Æ÷:§ùÕÉØùîc™vì¬:Ü©;öÊÓwDŒTR¡ôJ<EFBFBD>rÊ4 ó¥Js•ôIÄ¥Ãóue·Xcùá}*LzhóÄoå , :µð5†ü:u<06>¨t,Œ¥´|~Ç>—Avýܧ4z„í2-šáÆ/ÎJ…Y¥f_èñ“{[Af×í…“