wm: add noctalia shell plugins
This commit is contained in:
parent
b9b9bbc998
commit
d1f4d2c281
38 changed files with 1398 additions and 696 deletions
191
flake.lock
generated
191
flake.lock
generated
|
|
@ -178,11 +178,11 @@
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1771987897,
|
"lastModified": 1772764582,
|
||||||
"narHash": "sha256-5pNQFGxG3fxS9pGnNBJjT76veotKIKq2XpAVFGAhCdI=",
|
"narHash": "sha256-hSwjmpXHFqzSXrndVekA0IheKrbC7wi0IbfZTYwlmXw=",
|
||||||
"owner": "caelestia-dots",
|
"owner": "caelestia-dots",
|
||||||
"repo": "cli",
|
"repo": "cli",
|
||||||
"rev": "b0d68f0a1c48fa138d6fde94dcbecea801a86a01",
|
"rev": "4bcd42f482d038b98145b0b03388244b68b7d35d",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
|
@ -200,11 +200,11 @@
|
||||||
"quickshell": "quickshell"
|
"quickshell": "quickshell"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1772330657,
|
"lastModified": 1772934947,
|
||||||
"narHash": "sha256-cWblprYsDUeAWA57xAqxIjNxXvDI/rqYn6TFp2OPi/k=",
|
"narHash": "sha256-CCZKZAa7uaRBY5TgKG59fOpmDkBiGkY78mbcJ68A9Vw=",
|
||||||
"owner": "caelestia-dots",
|
"owner": "caelestia-dots",
|
||||||
"repo": "shell",
|
"repo": "shell",
|
||||||
"rev": "278fd4a4ed1bfb42c3fe197ff38b587539c012aa",
|
"rev": "658e09f89664978497a81f744a8f9186ee32c518",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
|
@ -250,11 +250,11 @@
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1772420042,
|
"lastModified": 1772867152,
|
||||||
"narHash": "sha256-naZz40TUFMa0E0CutvwWsSPhgD5JldyTUDEgP9ADpfU=",
|
"narHash": "sha256-RIFgZ4O6Eg+5ysZ8Tqb3YvcqiRaNy440GEY22ltjRrs=",
|
||||||
"owner": "nix-community",
|
"owner": "nix-community",
|
||||||
"repo": "disko",
|
"repo": "disko",
|
||||||
"rev": "5af7af10f14706e4095bd6bc0d9373eb097283c6",
|
"rev": "eaafb89b56e948661d618eefd4757d9ea8d77514",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
|
@ -637,7 +637,7 @@
|
||||||
},
|
},
|
||||||
"flake-utils_6": {
|
"flake-utils_6": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"systems": "systems_11"
|
"systems": "systems_12"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1731533236,
|
"lastModified": 1731533236,
|
||||||
|
|
@ -679,11 +679,11 @@
|
||||||
"zon2nix": "zon2nix"
|
"zon2nix": "zon2nix"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1772511675,
|
"lastModified": 1772901710,
|
||||||
"narHash": "sha256-0VoWORbMVtDW7fwN0qwoc5SDZ6t/mdmt2NJSkQ1Mil0=",
|
"narHash": "sha256-iHVOdllj/cLEV7SdcvSjPem2pP6K7ISPL+HKnENoWjA=",
|
||||||
"owner": "ghostty-org",
|
"owner": "ghostty-org",
|
||||||
"repo": "ghostty",
|
"repo": "ghostty",
|
||||||
"rev": "2502ca294efe5aa9722c36e25b2252b0150054e9",
|
"rev": "472b926a4d7abbacad4deea17aa0a0c69ffc12d3",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
|
@ -699,11 +699,11 @@
|
||||||
"nixpkgs": "nixpkgs_3"
|
"nixpkgs": "nixpkgs_3"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1772024342,
|
"lastModified": 1772893680,
|
||||||
"narHash": "sha256-+eXlIc4/7dE6EcPs9a2DaSY3fTA9AE526hGqkNID3Wg=",
|
"narHash": "sha256-JDqZMgxUTCq85ObSaFw0HhE+lvdOre1lx9iI6vYyOEs=",
|
||||||
"owner": "cachix",
|
"owner": "cachix",
|
||||||
"repo": "git-hooks.nix",
|
"repo": "git-hooks.nix",
|
||||||
"rev": "6e34e97ed9788b17796ee43ccdbaf871a5c2b476",
|
"rev": "8baab586afc9c9b57645a734c820e4ac0a604af9",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
|
@ -824,11 +824,11 @@
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1772516620,
|
"lastModified": 1772845525,
|
||||||
"narHash": "sha256-2r4cKdqCVlQkvcTcLUMxmsmAYZZxCMd//w/PnDnukTE=",
|
"narHash": "sha256-Dp5Ir2u4jJDGCgeMRviHvEQDe+U37hMxp6RSNOoMMPc=",
|
||||||
"owner": "nix-community",
|
"owner": "nix-community",
|
||||||
"repo": "home-manager",
|
"repo": "home-manager",
|
||||||
"rev": "2b9504d5a0169d4940a312abe2df2c5658db8de9",
|
"rev": "27b93804fbef1544cb07718d3f0a451f4c4cd6c0",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
|
@ -912,11 +912,11 @@
|
||||||
"xdph": "xdph"
|
"xdph": "xdph"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1772487546,
|
"lastModified": 1772913214,
|
||||||
"narHash": "sha256-DJugMsFeTNwV9MUIqQr+aE7xLBhKppYi8O+b2ACmUTU=",
|
"narHash": "sha256-lI361+KhTUerHMYJOaDzVhIikAX1PNcZMNY1WEx/+dc=",
|
||||||
"owner": "hyprwm",
|
"owner": "hyprwm",
|
||||||
"repo": "Hyprland",
|
"repo": "Hyprland",
|
||||||
"rev": "be03497b82be332a124dd170e8741623791ef7c4",
|
"rev": "a4ecae91600d7e8ceb31610176d6b40cb816711b",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
|
@ -1260,11 +1260,11 @@
|
||||||
"scenefx": "scenefx"
|
"scenefx": "scenefx"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1772520692,
|
"lastModified": 1772930756,
|
||||||
"narHash": "sha256-kF242TbUoMN1WwBu1G37lBZmITxqfmzPRE7IL5gmwIk=",
|
"narHash": "sha256-/+qbxTdtSnHozEGqs/P/ybE8k9aA8eAUCOaah8WqHtY=",
|
||||||
"owner": "DreamMaoMao",
|
"owner": "DreamMaoMao",
|
||||||
"repo": "mango",
|
"repo": "mango",
|
||||||
"rev": "1e1d41e626aa12057c03ec79ed11bcc5619f6748",
|
"rev": "a4ad8d0d1945fa37063ac3d112926e061f158c73",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
|
@ -1297,11 +1297,11 @@
|
||||||
"spectrum": "spectrum"
|
"spectrum": "spectrum"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1772338235,
|
"lastModified": 1772922713,
|
||||||
"narHash": "sha256-9XcwtSIL/c+pkC3SBNuxCJuSktFOBV1TLvvkhekyB8I=",
|
"narHash": "sha256-+dn2D7gNrrld3q/AapoZZ6HL8xnBS/pcV4Gye1Nfsg0=",
|
||||||
"owner": "microvm-nix",
|
"owner": "microvm-nix",
|
||||||
"repo": "microvm.nix",
|
"repo": "microvm.nix",
|
||||||
"rev": "9d1ff9b53532908a5eba7707931c9093508b6b92",
|
"rev": "6207a74a1ec31d3aa628cb98eb75795a10f49dea",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
|
@ -1354,11 +1354,11 @@
|
||||||
"nixpkgs": "nixpkgs_5"
|
"nixpkgs": "nixpkgs_5"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1772496284,
|
"lastModified": 1772928300,
|
||||||
"narHash": "sha256-pDGgYqXFU5cY1Jn11R7N/Q6DFazg6CQq8KDlqvyl/XE=",
|
"narHash": "sha256-7WXA2vUlHNvCjjTDLsM0CGzTE52d8M8tXj+c4QOQnsk=",
|
||||||
"owner": "nix-community",
|
"owner": "nix-community",
|
||||||
"repo": "neovim-nightly-overlay",
|
"repo": "neovim-nightly-overlay",
|
||||||
"rev": "fc9e6626baffb5b577810269713aedc37e95ef60",
|
"rev": "8df2141922896b7923ab78d624951f29531b5e8a",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
|
@ -1370,11 +1370,11 @@
|
||||||
"neovim-src": {
|
"neovim-src": {
|
||||||
"flake": false,
|
"flake": false,
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1772473891,
|
"lastModified": 1772909350,
|
||||||
"narHash": "sha256-E/0dAqFsUm4DggmHBl8rfI67yK227RXpzbEkZ7729bM=",
|
"narHash": "sha256-SOywFX51TumgEMzjRN8JBo2E59Dr9+13sye7qv20nR8=",
|
||||||
"owner": "neovim",
|
"owner": "neovim",
|
||||||
"repo": "neovim",
|
"repo": "neovim",
|
||||||
"rev": "a8361c3afc5b9281814e9f16a9d4291e095b38fa",
|
"rev": "e8e694d837427bd158d51dd62a25f165d49725c6",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
|
@ -1515,11 +1515,11 @@
|
||||||
"systems": "systems_6"
|
"systems": "systems_6"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1772334875,
|
"lastModified": 1772592046,
|
||||||
"narHash": "sha256-AveYVY2plEJ62Br6iAd4fB5PDYyjJoTEmgdWRV3m+Vo=",
|
"narHash": "sha256-+Lyl+mGVd0t2nlR6ODK/gvUHzMtF5qLlbTK+x5tCenU=",
|
||||||
"owner": "Infinidoge",
|
"owner": "Infinidoge",
|
||||||
"repo": "nix-minecraft",
|
"repo": "nix-minecraft",
|
||||||
"rev": "a852ac73a4f9bf8270bdac90a72a28fef5df846b",
|
"rev": "483abf9ad6aeac1d61f2a5419ded2879f0c4795e",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
|
@ -1712,11 +1712,11 @@
|
||||||
},
|
},
|
||||||
"nixpkgs_5": {
|
"nixpkgs_5": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1772419343,
|
"lastModified": 1772736753,
|
||||||
"narHash": "sha256-QU3Cd5DJH7dHyMnGEFfPcZDaCAsJQ6tUD+JuUsYqnKU=",
|
"narHash": "sha256-au/m3+EuBLoSzWUCb64a/MZq6QUtOV8oC0D9tY2scPQ=",
|
||||||
"owner": "NixOS",
|
"owner": "NixOS",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "93178f6a00c22fcdee1c6f5f9ab92f2072072ea9",
|
"rev": "917fec990948658ef1ccd07cef2a1ef060786846",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
|
@ -1744,11 +1744,11 @@
|
||||||
},
|
},
|
||||||
"nixpkgs_7": {
|
"nixpkgs_7": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1772479524,
|
"lastModified": 1772736753,
|
||||||
"narHash": "sha256-u7nCaNiMjqvKpE+uZz9hE7pgXXTmm5yvdtFaqzSzUQI=",
|
"narHash": "sha256-au/m3+EuBLoSzWUCb64a/MZq6QUtOV8oC0D9tY2scPQ=",
|
||||||
"owner": "nixos",
|
"owner": "nixos",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "4215e62dc2cd3bc705b0a423b9719ff6be378a43",
|
"rev": "917fec990948658ef1ccd07cef2a1ef060786846",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
|
@ -1795,14 +1795,16 @@
|
||||||
"nixpkgs": [
|
"nixpkgs": [
|
||||||
"nixpkgs"
|
"nixpkgs"
|
||||||
],
|
],
|
||||||
"noctalia-qs": "noctalia-qs"
|
"noctalia-qs": [
|
||||||
|
"noctalia-qs"
|
||||||
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1772500480,
|
"lastModified": 1772925400,
|
||||||
"narHash": "sha256-7Rj0vLxKBn25QDKaW1heAQPH9ICg/cyrlLsoEPO0E58=",
|
"narHash": "sha256-I0Gb+CO6bXi1U5PYgCqnuvI1B+R9kZtamLwhVvOywSo=",
|
||||||
"owner": "noctalia-dev",
|
"owner": "noctalia-dev",
|
||||||
"repo": "noctalia-shell",
|
"repo": "noctalia-shell",
|
||||||
"rev": "ddfb06fe5b8d859578b269362d2f3e21b5dc5a75",
|
"rev": "5f319987a5003c383678f4aae0cf71f78c7ea49e",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
|
@ -1814,16 +1816,16 @@
|
||||||
"noctalia-qs": {
|
"noctalia-qs": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"nixpkgs": [
|
"nixpkgs": [
|
||||||
"noctalia",
|
|
||||||
"nixpkgs"
|
"nixpkgs"
|
||||||
]
|
],
|
||||||
|
"systems": "systems_8"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1772227064,
|
"lastModified": 1773175685,
|
||||||
"narHash": "sha256-f821ZSoGpa/aXrWq0gPpea9qBnX8KDyavGKkptz2Mog=",
|
"narHash": "sha256-YOkWzVq7opym1ovJvSCvqpG6OCDGJwPo/EPeRxcGay4=",
|
||||||
"owner": "noctalia-dev",
|
"owner": "noctalia-dev",
|
||||||
"repo": "noctalia-qs",
|
"repo": "noctalia-qs",
|
||||||
"rev": "0741d27d2f7db567270f139c5d1684614ecf9863",
|
"rev": "6b9eceefde3d47ca83c544b54bcdd358be4cbd2f",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
|
@ -1866,14 +1868,14 @@
|
||||||
"nixpkgs": [
|
"nixpkgs": [
|
||||||
"nixpkgs"
|
"nixpkgs"
|
||||||
],
|
],
|
||||||
"systems": "systems_8"
|
"systems": "systems_9"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1772483693,
|
"lastModified": 1772875143,
|
||||||
"narHash": "sha256-sOq/GUSR0uw1eQla0Wc5BKztPqBJBj3khd/GhaVg4xU=",
|
"narHash": "sha256-ENBRe7vCCp/SIG2WRKI2pyAxwnrc9CPuwZ4CtMu4KU4=",
|
||||||
"owner": "notashelf",
|
"owner": "notashelf",
|
||||||
"repo": "nvf",
|
"repo": "nvf",
|
||||||
"rev": "750dbfaf6eb62db8e67afc03a3ae3078bfd8f098",
|
"rev": "6681e33727409d4ccfa687de981b594110a735d6",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
|
@ -1936,11 +1938,11 @@
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1771926182,
|
"lastModified": 1772925576,
|
||||||
"narHash": "sha256-QbXuSLhiSxOq6ydBL3+KGe1aiYWBW+e3J6qjJZaRMq0=",
|
"narHash": "sha256-mMoiXABDtkSJxCYDrkhJ/TrrJf5M46oUfIlJvv2gkZ0=",
|
||||||
"ref": "refs/heads/master",
|
"ref": "refs/heads/master",
|
||||||
"rev": "cddb4f061bab495f4473ca5f2c571b6c710efef7",
|
"rev": "15a84097653593dd15fad59a56befc2b7bdc270d",
|
||||||
"revCount": 744,
|
"revCount": 750,
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://git.outfoxxed.me/outfoxxed/quickshell"
|
"url": "https://git.outfoxxed.me/outfoxxed/quickshell"
|
||||||
},
|
},
|
||||||
|
|
@ -1977,13 +1979,15 @@
|
||||||
"nixd": "nixd",
|
"nixd": "nixd",
|
||||||
"nixpkgs": "nixpkgs_7",
|
"nixpkgs": "nixpkgs_7",
|
||||||
"noctalia": "noctalia",
|
"noctalia": "noctalia",
|
||||||
|
"noctalia-qs": "noctalia-qs",
|
||||||
"nvf": "nvf",
|
"nvf": "nvf",
|
||||||
"rust-overlay": "rust-overlay_3",
|
"rust-overlay": "rust-overlay_3",
|
||||||
"sops-nix": "sops-nix",
|
"sops-nix": "sops-nix",
|
||||||
"stylix": "stylix",
|
"stylix": "stylix",
|
||||||
"systems": "systems_10",
|
"systems": "systems_11",
|
||||||
"yazi": "yazi",
|
"yazi": "yazi",
|
||||||
"zen-browser": "zen-browser"
|
"zen-browser": "zen-browser",
|
||||||
|
"zen-nebula": "zen-nebula"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"rust-overlay": {
|
"rust-overlay": {
|
||||||
|
|
@ -2035,11 +2039,11 @@
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1772507320,
|
"lastModified": 1772939270,
|
||||||
"narHash": "sha256-GdGXniFvtIfRiakc+ncdQYnoQjKbTCv9Imjfl4ggquI=",
|
"narHash": "sha256-HbxD5DJAKxzo0G8on5wdY+OZNiUWt3FTvGmXmVEmg7g=",
|
||||||
"owner": "oxalica",
|
"owner": "oxalica",
|
||||||
"repo": "rust-overlay",
|
"repo": "rust-overlay",
|
||||||
"rev": "1775eafa1879ac098ee436849bc9c3d963206f89",
|
"rev": "bb93f191a07c0165992ed6d0b4197ee5c7e6e641",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
|
@ -2137,7 +2141,7 @@
|
||||||
"nixpkgs"
|
"nixpkgs"
|
||||||
],
|
],
|
||||||
"nur": "nur",
|
"nur": "nur",
|
||||||
"systems": "systems_9",
|
"systems": "systems_10",
|
||||||
"tinted-foot": "tinted-foot",
|
"tinted-foot": "tinted-foot",
|
||||||
"tinted-kitty": "tinted-kitty",
|
"tinted-kitty": "tinted-kitty",
|
||||||
"tinted-schemes": "tinted-schemes",
|
"tinted-schemes": "tinted-schemes",
|
||||||
|
|
@ -2174,6 +2178,21 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"systems_10": {
|
"systems_10": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1681028828,
|
||||||
|
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
|
||||||
|
"owner": "nix-systems",
|
||||||
|
"repo": "default",
|
||||||
|
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "nix-systems",
|
||||||
|
"repo": "default",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"systems_11": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1681028828,
|
"lastModified": 1681028828,
|
||||||
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
|
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
|
||||||
|
|
@ -2187,7 +2206,7 @@
|
||||||
"type": "indirect"
|
"type": "indirect"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"systems_11": {
|
"systems_12": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1681028828,
|
"lastModified": 1681028828,
|
||||||
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
|
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
|
||||||
|
|
@ -2294,16 +2313,16 @@
|
||||||
},
|
},
|
||||||
"systems_8": {
|
"systems_8": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1681028828,
|
"lastModified": 1689347949,
|
||||||
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
|
"narHash": "sha256-12tWmuL2zgBgZkdoB6qXZsgJEH9LR3oUgpaQq2RbI80=",
|
||||||
"owner": "nix-systems",
|
"owner": "nix-systems",
|
||||||
"repo": "default",
|
"repo": "default-linux",
|
||||||
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
|
"rev": "31732fcf5e8fea42e59c2488ad31a0e651500f68",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
"owner": "nix-systems",
|
"owner": "nix-systems",
|
||||||
"repo": "default",
|
"repo": "default-linux",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
@ -2505,11 +2524,11 @@
|
||||||
"rust-overlay": "rust-overlay_4"
|
"rust-overlay": "rust-overlay_4"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1772502075,
|
"lastModified": 1772869527,
|
||||||
"narHash": "sha256-FDyvMvqrpDb2CrXOvtUEr0b4qgbe7D/POqVWdFD7wuI=",
|
"narHash": "sha256-U0E3U2Iu3JeQFbTQ+vclG2jZMoJl+rJdEa68I8qk4Eg=",
|
||||||
"owner": "sxyazi",
|
"owner": "sxyazi",
|
||||||
"repo": "yazi",
|
"repo": "yazi",
|
||||||
"rev": "0efeaf5f641c7809bc820680c8a7d43a69ff2e13",
|
"rev": "741f84e22b2c360366c685724d45cbec6d90b480",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
|
@ -2528,11 +2547,11 @@
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1772517053,
|
"lastModified": 1772858378,
|
||||||
"narHash": "sha256-aBuL2TFnyBLR+t6iBlKnTWWzprXYKQQIaV0IuCSPPeE=",
|
"narHash": "sha256-VPRlTud1REOz0GPjq3XQNjk5GpH/xNbeadiul4gkPGA=",
|
||||||
"owner": "0xc000022070",
|
"owner": "0xc000022070",
|
||||||
"repo": "zen-browser-flake",
|
"repo": "zen-browser-flake",
|
||||||
"rev": "32e9673aee2ae994ced561247918952398a3e933",
|
"rev": "42e1e9a1cb5b507789a51193113d56f8f1bb08d9",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
|
@ -2541,6 +2560,22 @@
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"zen-nebula": {
|
||||||
|
"flake": false,
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1772915241,
|
||||||
|
"narHash": "sha256-GvSyNwPbvUpI7Ii2WC0IW0soKDzNOj51YsjFTFAmsKY=",
|
||||||
|
"owner": "JustAdumbPrsn",
|
||||||
|
"repo": "zen-nebula",
|
||||||
|
"rev": "d5dd37455aa4c12e89c188c02f0c3a56841eee6f",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "JustAdumbPrsn",
|
||||||
|
"repo": "zen-nebula",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
"zig": {
|
"zig": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"flake-compat": [
|
"flake-compat": [
|
||||||
|
|
|
||||||
11
flake.nix
11
flake.nix
|
|
@ -69,6 +69,11 @@
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
zen-nebula = {
|
||||||
|
url = "github:JustAdumbPrsn/zen-nebula";
|
||||||
|
flake = false;
|
||||||
|
};
|
||||||
|
|
||||||
zen-browser = {
|
zen-browser = {
|
||||||
url = "github:0xc000022070/zen-browser-flake";
|
url = "github:0xc000022070/zen-browser-flake";
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
|
|
@ -143,9 +148,15 @@
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
noctalia-qs = {
|
||||||
|
url = "github:noctalia-dev/noctalia-qs";
|
||||||
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
|
};
|
||||||
|
|
||||||
noctalia = {
|
noctalia = {
|
||||||
url = "github:noctalia-dev/noctalia-shell";
|
url = "github:noctalia-dev/noctalia-shell";
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
|
inputs.noctalia-qs.follows = "noctalia-qs";
|
||||||
};
|
};
|
||||||
|
|
||||||
mango = {
|
mango = {
|
||||||
|
|
|
||||||
|
|
@ -1,197 +0,0 @@
|
||||||
# https://github.com/chick2d/neofetch-themes
|
|
||||||
|
|
||||||
print_info() {
|
|
||||||
#info "\e[31m " users
|
|
||||||
info "\e[32m " kernel
|
|
||||||
info "\e[33m " uptime
|
|
||||||
info "\e[34m " packages
|
|
||||||
info "\e[35m " wm
|
|
||||||
info "\e[32m " shell
|
|
||||||
#info "\e[33m" memory
|
|
||||||
}
|
|
||||||
|
|
||||||
# Shorten the output of the kernel function.
|
|
||||||
kernel_shorthand="off"
|
|
||||||
|
|
||||||
# Shorten the output of the distro function
|
|
||||||
distro_shorthand="off"
|
|
||||||
|
|
||||||
# Show/Hide OS Architecture.
|
|
||||||
os_arch="off"
|
|
||||||
|
|
||||||
# Shorten the output of the uptime function
|
|
||||||
uptime_shorthand="on"
|
|
||||||
|
|
||||||
# Show memory pecentage in output.
|
|
||||||
memory_percent="on"
|
|
||||||
|
|
||||||
# Change memory output unit ('kib', 'mib', 'gib')
|
|
||||||
memory_unit="mib"
|
|
||||||
|
|
||||||
# Show/Hide Package Manager names.
|
|
||||||
# Values: 'on', 'tiny' 'off'
|
|
||||||
# on: '998 (pacman), 8 (flatpak), 4 (snap)'
|
|
||||||
# tiny: '908 (pacman, flatpak, snap)'
|
|
||||||
# off: '908'
|
|
||||||
package_managers="on"
|
|
||||||
|
|
||||||
# Show the path to $SHELL
|
|
||||||
# Example:
|
|
||||||
# on: '/bin/bash'
|
|
||||||
# off: 'bash'
|
|
||||||
shell_path="off"
|
|
||||||
|
|
||||||
# Show $SHELL version
|
|
||||||
shell_version="on"
|
|
||||||
|
|
||||||
# Display refresh rate next to each monitor
|
|
||||||
refresh_rate="off"
|
|
||||||
|
|
||||||
# Show Desktop Environment version
|
|
||||||
de_version="on"
|
|
||||||
|
|
||||||
# Text Colors
|
|
||||||
# Values: 'distro', 'num' 'num' 'num' 'num' 'num' 'num'
|
|
||||||
# Each number represents a different part of the text in
|
|
||||||
# this order: 'title', '@', 'underline', 'subtitle', 'colon', 'info'
|
|
||||||
# Example:
|
|
||||||
# colors=(distro) - Text is colored based on Distro colors.
|
|
||||||
# colors=(4 6 1 8 8 6) - Text is colored in the order above.
|
|
||||||
# colors=(4 7 7 4 7 7)
|
|
||||||
colors=(distro)
|
|
||||||
|
|
||||||
# Toggle bold text
|
|
||||||
bold="on"
|
|
||||||
|
|
||||||
# Enable/Disable Underline
|
|
||||||
underline_enabled="on"
|
|
||||||
|
|
||||||
# Underline character (string)
|
|
||||||
underline_char="─"
|
|
||||||
|
|
||||||
# Info Separator
|
|
||||||
separator=" •"
|
|
||||||
|
|
||||||
# Color block range. The range of colors to print.
|
|
||||||
# Values: 'num'
|
|
||||||
block_range=(0 7)
|
|
||||||
|
|
||||||
# Toggle color blocks
|
|
||||||
color_blocks="on"
|
|
||||||
|
|
||||||
# Color block width in spaces
|
|
||||||
block_width=3
|
|
||||||
|
|
||||||
# Color block height in lines
|
|
||||||
block_height=1
|
|
||||||
|
|
||||||
# Color Alignment
|
|
||||||
# Values: 'auto', 'num'
|
|
||||||
# Number specifies how far from the left side of the terminal (in spaces) to
|
|
||||||
# begin printing the columns, in case you want to e.g. center them under your
|
|
||||||
# text.
|
|
||||||
# Example:
|
|
||||||
# col_offset="auto" - Default behavior of neofetch
|
|
||||||
# col_offset=7 - Leave 7 spaces then print the colors
|
|
||||||
col_offset="auto"
|
|
||||||
|
|
||||||
# Progress Bar characters
|
|
||||||
bar_char_elapsed="-"
|
|
||||||
bar_char_total="="
|
|
||||||
|
|
||||||
# Toggle Progress Bar border
|
|
||||||
bar_border="on"
|
|
||||||
|
|
||||||
# Progress bar length in spaces
|
|
||||||
# Number of chars long to make the progress bars.
|
|
||||||
bar_length=15
|
|
||||||
|
|
||||||
# Progress bar colors
|
|
||||||
# When set to distro, uses your distro's logo colors.
|
|
||||||
# Values: 'distro', 'num'
|
|
||||||
bar_color_elapsed="distro"
|
|
||||||
bar_color_total="distro"
|
|
||||||
|
|
||||||
# Info display
|
|
||||||
# Display a bar with the info.
|
|
||||||
# Values: 'bar', 'infobar', 'barinfo', 'off'
|
|
||||||
# Example:
|
|
||||||
# bar: '[---=======]'
|
|
||||||
# infobar: 'info [---=======]'
|
|
||||||
# barinfo: '[---=======] info'
|
|
||||||
# off: 'info'
|
|
||||||
cpu_display="off"
|
|
||||||
memory_display="off"
|
|
||||||
battery_display="off"
|
|
||||||
disk_display="off"
|
|
||||||
|
|
||||||
# Image backend.
|
|
||||||
# Values: 'ascii', 'caca', 'chafa', 'jp2a', 'iterm2', 'off',
|
|
||||||
# 'pot', 'termpix', 'pixterm', 'tycat', 'w3m', 'kitty'
|
|
||||||
image_backend="ascii"
|
|
||||||
|
|
||||||
# Image Source
|
|
||||||
# Default: 'auto'
|
|
||||||
# Values: 'auto', 'ascii', 'wallpaper', '/path/to/img', '/path/to/ascii', '/path/to/dir/'
|
|
||||||
# 'command output (neofetch --ascii "$(fortune | cowsay -W 30)")'
|
|
||||||
# image_source="${HOME}/.config/neofetch/ascii.txt"
|
|
||||||
|
|
||||||
# Ascii distro (Which distro's ascii art to display).
|
|
||||||
# Default: 'auto'
|
|
||||||
# Values: 'auto', 'distro_name'
|
|
||||||
ascii_distro="NixOS_small"
|
|
||||||
|
|
||||||
# Ascii Colors
|
|
||||||
# Values: 'distro', 'num' 'num' 'num' 'num' 'num' 'num'
|
|
||||||
# Example:
|
|
||||||
# ascii_colors=(distro) - Ascii is colored based on Distro colors.
|
|
||||||
# ascii_colors=(4 6 1 8 8 6) - Ascii is colored using these colors.
|
|
||||||
ascii_colors=(distro)
|
|
||||||
|
|
||||||
# Whether or not to bold the ascii logo.
|
|
||||||
ascii_bold="on"
|
|
||||||
|
|
||||||
# Image loop
|
|
||||||
# Setting this to on will make neofetch redraw the image constantly until
|
|
||||||
# Ctrl+C is pressed. This fixes display issues in some terminal emulators.
|
|
||||||
image_loop="off"
|
|
||||||
|
|
||||||
# Thumbnail directory
|
|
||||||
# Default: '~/.cache/thumbnails/neofetch'
|
|
||||||
thumbnail_dir="${XDG_CACHE_HOME:-${HOME}/.cache}/thumbnails/neofetch"
|
|
||||||
|
|
||||||
# Crop mode
|
|
||||||
# Values: 'normal', 'fit', 'fill'
|
|
||||||
# See this wiki page to learn about the fit and fill options.
|
|
||||||
# https://github.com/dylanaraps/neofetch/wiki/What-is-Waifu-Crop%3F
|
|
||||||
crop_mode="normal"
|
|
||||||
|
|
||||||
# Crop offset
|
|
||||||
# Note: Only affects 'normal' crop mode.
|
|
||||||
# Values: 'northwest', 'north', 'northeast', 'west', 'center'
|
|
||||||
# 'east', 'southwest', 'south', 'southeast'
|
|
||||||
crop_offset="center"
|
|
||||||
|
|
||||||
# Image size
|
|
||||||
# The image is half the terminal width by default.
|
|
||||||
# Values: 'auto', '00px', '00%', 'none'
|
|
||||||
image_size="auto"
|
|
||||||
|
|
||||||
# Gap between image and text. Can be a positive or negative integer
|
|
||||||
gap=5
|
|
||||||
|
|
||||||
# Image offsets
|
|
||||||
# Only works with the w3m backend.
|
|
||||||
# Values: 'px'
|
|
||||||
yoffset=0
|
|
||||||
xoffset=0
|
|
||||||
|
|
||||||
# Image background color
|
|
||||||
# Only works with the w3m backend.
|
|
||||||
# Values: 'color', 'blue'
|
|
||||||
background_color=
|
|
||||||
|
|
||||||
# Stdout mode
|
|
||||||
# Turn off all colors and disables image backend (ASCII/Image).
|
|
||||||
# Useful for piping into another command.
|
|
||||||
stdout="off"
|
|
||||||
|
|
@ -11,7 +11,6 @@ in
|
||||||
lib.mkForce "${configDir}/starship/starship.toml";
|
lib.mkForce "${configDir}/starship/starship.toml";
|
||||||
|
|
||||||
home.file = {
|
home.file = {
|
||||||
".config/neofetch".source = "${configDir}/neofetch";
|
|
||||||
".config/rofi".source = "${configDir}/rofi";
|
".config/rofi".source = "${configDir}/rofi";
|
||||||
".config/scripts".source = "${configDir}/scripts";
|
".config/scripts".source = "${configDir}/scripts";
|
||||||
".config/gh" = {
|
".config/gh" = {
|
||||||
|
|
|
||||||
|
|
@ -6,6 +6,11 @@
|
||||||
};
|
};
|
||||||
treesitter.grammars = with pkgs.vimPlugins.nvim-treesitter-parsers; [
|
treesitter.grammars = with pkgs.vimPlugins.nvim-treesitter-parsers; [
|
||||||
dockerfile
|
dockerfile
|
||||||
|
latex
|
||||||
|
scss
|
||||||
|
svelte
|
||||||
|
typst
|
||||||
|
vue
|
||||||
];
|
];
|
||||||
extraPackages = with pkgs; [
|
extraPackages = with pkgs; [
|
||||||
# docker
|
# docker
|
||||||
|
|
|
||||||
|
|
@ -45,7 +45,7 @@ in
|
||||||
enable = true;
|
enable = true;
|
||||||
setupOpts = {
|
setupOpts = {
|
||||||
image = {
|
image = {
|
||||||
enabled = false;
|
enabled = true;
|
||||||
doc = {
|
doc = {
|
||||||
enabled = true;
|
enabled = true;
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,5 @@
|
||||||
{
|
{
|
||||||
|
inputs,
|
||||||
osConfig,
|
osConfig,
|
||||||
config,
|
config,
|
||||||
helper,
|
helper,
|
||||||
|
|
@ -9,13 +10,9 @@ let
|
||||||
inherit (osConfig.systemConf) username;
|
inherit (osConfig.systemConf) username;
|
||||||
inherit (helper) capitalize;
|
inherit (helper) capitalize;
|
||||||
inherit (pkgs) runCommand;
|
inherit (pkgs) runCommand;
|
||||||
|
inherit (builtins) hasAttr;
|
||||||
|
|
||||||
zenNebula = pkgs.fetchFromGitHub {
|
zenNebula = inputs.zen-nebula;
|
||||||
owner = "JustAdumbPrsn";
|
|
||||||
repo = "zen-nebula";
|
|
||||||
rev = "main";
|
|
||||||
sha256 = "sha256-Eg9HsN+yDA8OdVcE9clS+FyUhVBH3ooN/odkZIVR/p4=";
|
|
||||||
};
|
|
||||||
|
|
||||||
patchedNebula =
|
patchedNebula =
|
||||||
runCommand "patched-nebula"
|
runCommand "patched-nebula"
|
||||||
|
|
@ -37,7 +34,6 @@ let
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
programs.zen-browser = {
|
programs.zen-browser = {
|
||||||
suppressXdgMigrationWarning = true;
|
|
||||||
enable = true;
|
enable = true;
|
||||||
languagePacks = [
|
languagePacks = [
|
||||||
"en-US"
|
"en-US"
|
||||||
|
|
@ -156,7 +152,10 @@ in
|
||||||
let
|
let
|
||||||
zen-browser = config.programs.zen-browser.package;
|
zen-browser = config.programs.zen-browser.package;
|
||||||
in
|
in
|
||||||
zen-browser.meta.desktopFileName;
|
if hasAttr "desktopFileName" zen-browser.meta then
|
||||||
|
zen-browser.meta.desktopFileName
|
||||||
|
else
|
||||||
|
"Zen Browser Twilight";
|
||||||
|
|
||||||
associations = builtins.listToAttrs (
|
associations = builtins.listToAttrs (
|
||||||
map
|
map
|
||||||
|
|
|
||||||
|
|
@ -1,11 +1,9 @@
|
||||||
{
|
{
|
||||||
pkgs,
|
pkgs,
|
||||||
config,
|
config,
|
||||||
lib,
|
|
||||||
...
|
...
|
||||||
}:
|
}:
|
||||||
let
|
let
|
||||||
inherit (lib) mkForce;
|
|
||||||
inherit (config.networking) hostName;
|
inherit (config.networking) hostName;
|
||||||
inherit (config.systemConf) username;
|
inherit (config.systemConf) username;
|
||||||
in
|
in
|
||||||
|
|
@ -15,10 +13,6 @@ in
|
||||||
mattermost-desktop
|
mattermost-desktop
|
||||||
];
|
];
|
||||||
|
|
||||||
home.sessionVariables = {
|
|
||||||
BROWSER = mkForce "chromium";
|
|
||||||
};
|
|
||||||
|
|
||||||
services.kanshi.settings = [
|
services.kanshi.settings = [
|
||||||
{
|
{
|
||||||
profile.name = hostName;
|
profile.name = hostName;
|
||||||
|
|
@ -32,35 +26,10 @@ in
|
||||||
}
|
}
|
||||||
];
|
];
|
||||||
|
|
||||||
programs.noctalia-shell = {
|
|
||||||
settings = { };
|
|
||||||
};
|
|
||||||
|
|
||||||
programs.chromium = {
|
|
||||||
enable = true;
|
|
||||||
extensions = [
|
|
||||||
# Bitwarden
|
|
||||||
{
|
|
||||||
id = "nngceckbapebfimnlniiiahkandclblb";
|
|
||||||
}
|
|
||||||
# Vimium
|
|
||||||
{
|
|
||||||
id = "dbepggeogbaibhgnhhndojpepiihcmeb";
|
|
||||||
}
|
|
||||||
# Dark Reader
|
|
||||||
{
|
|
||||||
id = "eimadpbcbfnmbkopoojfekhnkhdbieeh";
|
|
||||||
}
|
|
||||||
# Vertical Tabs
|
|
||||||
{
|
|
||||||
id = "efobhjmgoddhfdhaflheioeagkcknoji";
|
|
||||||
}
|
|
||||||
];
|
|
||||||
};
|
|
||||||
|
|
||||||
imports = [
|
imports = [
|
||||||
../../../../home/presets/basic.nix
|
../../../../home/presets/basic.nix
|
||||||
../../../../home/user/zellij.nix
|
../../../../home/user/zellij.nix
|
||||||
|
./noctalia.nix
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
27
system/dev/dn-lap/home/noctalia.nix
Normal file
27
system/dev/dn-lap/home/noctalia.nix
Normal file
|
|
@ -0,0 +1,27 @@
|
||||||
|
{ ... }:
|
||||||
|
{
|
||||||
|
programs.noctalia-shell.settings = {
|
||||||
|
desktopWidgets = {
|
||||||
|
monitorWidgets = [
|
||||||
|
{
|
||||||
|
name = "eDP-1";
|
||||||
|
widgets = [
|
||||||
|
{
|
||||||
|
clockColor = "none";
|
||||||
|
clockStyle = "binary";
|
||||||
|
customFont = "";
|
||||||
|
format = "HH:mm\\nd MMMM yyyy";
|
||||||
|
id = "Clock";
|
||||||
|
roundedCorners = true;
|
||||||
|
scale = 2.25675;
|
||||||
|
showBackground = false;
|
||||||
|
useCustomFont = false;
|
||||||
|
x = 25;
|
||||||
|
y = 64;
|
||||||
|
}
|
||||||
|
];
|
||||||
|
}
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
39
system/dev/dn-pre7780/expr/acme.nix
Normal file
39
system/dev/dn-pre7780/expr/acme.nix
Normal file
|
|
@ -0,0 +1,39 @@
|
||||||
|
{
|
||||||
|
self,
|
||||||
|
config,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
let
|
||||||
|
serverACMEConfig = self.nixosConfigurations.dn-server.config.security.acme.certs."dnywe.com";
|
||||||
|
inherit (config.sops) secrets;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
users.users.nginx.extraGroups = [ "acme" ];
|
||||||
|
|
||||||
|
sops.secrets = {
|
||||||
|
"acme/cloudflare" = {
|
||||||
|
mode = "0640";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
security.acme = {
|
||||||
|
acceptTerms = true;
|
||||||
|
certs."dnywe.com" = {
|
||||||
|
inherit (serverACMEConfig)
|
||||||
|
domain
|
||||||
|
server
|
||||||
|
dnsProvider
|
||||||
|
email
|
||||||
|
dnsResolver
|
||||||
|
dnsPropagationCheck
|
||||||
|
;
|
||||||
|
environmentFile = pkgs.writeText "lego-config" ''
|
||||||
|
LEGO_CA_CERTIFICATES=${config.security.pki.caBundle}
|
||||||
|
'';
|
||||||
|
credentialFiles = {
|
||||||
|
"CLOUDFLARE_DNS_API_TOKEN_FILE" = secrets."acme/cloudflare".path;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
@ -1,6 +1,18 @@
|
||||||
|
{ ... }:
|
||||||
|
let
|
||||||
|
extra-modules = "${
|
||||||
|
fetchGit {
|
||||||
|
url = "https://git.dnywe.com/dachxy/extra-modules";
|
||||||
|
rev = "cce58d705bee67e0634d4353b5eb40bd4a99ca42";
|
||||||
|
ref = "main";
|
||||||
|
}
|
||||||
|
}/modules//default.nix";
|
||||||
|
in
|
||||||
{
|
{
|
||||||
imports = [
|
imports = [
|
||||||
# ./osx-kvm.nix
|
# ./osx-kvm.nix
|
||||||
|
extra-modules
|
||||||
./noise-cancel.nix
|
./noise-cancel.nix
|
||||||
|
./acme.nix
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -88,7 +88,6 @@ in
|
||||||
# Noctalia
|
# Noctalia
|
||||||
programs.noctalia-shell.filteredIds = [
|
programs.noctalia-shell.filteredIds = [
|
||||||
"Brightness"
|
"Brightness"
|
||||||
"Battery"
|
|
||||||
];
|
];
|
||||||
|
|
||||||
# ==== WM ==== #
|
# ==== WM ==== #
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,6 @@
|
||||||
{
|
{
|
||||||
imports = [
|
imports = [
|
||||||
./hyprland.nix
|
./hyprland.nix
|
||||||
|
./noctalia.nix
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
|
||||||
28
system/dev/dn-pre7780/home/wm/noctalia.nix
Normal file
28
system/dev/dn-pre7780/home/wm/noctalia.nix
Normal file
|
|
@ -0,0 +1,28 @@
|
||||||
|
{ ... }:
|
||||||
|
{
|
||||||
|
programs.noctalia-shell.settings = {
|
||||||
|
|
||||||
|
desktopWidgets = {
|
||||||
|
monitorWidgets = [
|
||||||
|
{
|
||||||
|
name = "DP-6";
|
||||||
|
widgets = [
|
||||||
|
{
|
||||||
|
clockColor = "none";
|
||||||
|
clockStyle = "binary";
|
||||||
|
customFont = "";
|
||||||
|
format = "HH:mm\\nd MMMM yyyy";
|
||||||
|
id = "Clock";
|
||||||
|
roundedCorners = true;
|
||||||
|
scale = 2.25675;
|
||||||
|
showBackground = false;
|
||||||
|
useCustomFont = false;
|
||||||
|
x = 25;
|
||||||
|
y = 64;
|
||||||
|
}
|
||||||
|
];
|
||||||
|
}
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
@ -1,7 +1,6 @@
|
||||||
{
|
{
|
||||||
imports = [
|
imports = [
|
||||||
../../../modules/netbird-client.nix
|
../../../modules/netbird-client.nix
|
||||||
./openfortivpn.nix
|
|
||||||
# ../../../modules/wireguard.nix
|
# ../../../modules/wireguard.nix
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,27 +0,0 @@
|
||||||
{
|
|
||||||
pkgs,
|
|
||||||
lib,
|
|
||||||
config,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
let
|
|
||||||
inherit (lib) getExe;
|
|
||||||
inherit (config.sops) secrets;
|
|
||||||
in
|
|
||||||
{
|
|
||||||
sops.secrets = {
|
|
||||||
"openfortivpn" = { };
|
|
||||||
};
|
|
||||||
|
|
||||||
systemd.services.openfortivpn = {
|
|
||||||
script = ''
|
|
||||||
${getExe pkgs.openfortivpn} -c "$CREDENTIALS_DIRECTORY/config" --set-dns=1 --use-resolvconf=1
|
|
||||||
'';
|
|
||||||
serviceConfig = {
|
|
||||||
Restart = "no";
|
|
||||||
LoadCredential = [
|
|
||||||
"config:${secrets."openfortivpn".path}"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
@ -1,6 +1,5 @@
|
||||||
wireguard:
|
wireguard:
|
||||||
wg0.conf: ENC[AES256_GCM,data:ozySeNEvkiLt9TGrZCrlJWKT5gcSlZ9T8AeXGO97SPgxI394eCQ/LOkVFl7AykhZvs7YkxMpZzAZxc0oNdTYuDlqfrNr0pqTUJmpX+5PVRmDb5z2MJvERktVkJ4LSvVodoYznDwT/y9q199AFKf3t4EoWuRyR/il6P8HuGVHXrKRYUrwuB4nuq1SIByY+8D2gzohFB/s6pSOPYy6/xCt0Nm+x0wmcdrlyOb0S+4WXlcou2ll98o9q2YDdVBKeW4jyUjFqXM2XzD0JXpAi9ZFlyzxyYNwa4oMYATyCBCH4BNHqe850QHEoCaOovioEdDH/tluB2X/891ixqzURypzbg==,iv:3Q5xOgGcg8/DIwHt4fHsQGtN8f2hGpVDtf47PcwW62I=,tag:SbJqhWi3+h1O5ZIOayDrUw==,type:str]
|
wg0.conf: ENC[AES256_GCM,data:ozySeNEvkiLt9TGrZCrlJWKT5gcSlZ9T8AeXGO97SPgxI394eCQ/LOkVFl7AykhZvs7YkxMpZzAZxc0oNdTYuDlqfrNr0pqTUJmpX+5PVRmDb5z2MJvERktVkJ4LSvVodoYznDwT/y9q199AFKf3t4EoWuRyR/il6P8HuGVHXrKRYUrwuB4nuq1SIByY+8D2gzohFB/s6pSOPYy6/xCt0Nm+x0wmcdrlyOb0S+4WXlcou2ll98o9q2YDdVBKeW4jyUjFqXM2XzD0JXpAi9ZFlyzxyYNwa4oMYATyCBCH4BNHqe850QHEoCaOovioEdDH/tluB2X/891ixqzURypzbg==,iv:3Q5xOgGcg8/DIwHt4fHsQGtN8f2hGpVDtf47PcwW62I=,tag:SbJqhWi3+h1O5ZIOayDrUw==,type:str]
|
||||||
openfortivpn: ENC[AES256_GCM,data:rWv6kZDYO4yKmrEfm63X7qin0veSx7U/ZZFPM0vxBPjIzh7VZg6wCjJ1pHpSpCT0DS39TA/Z5xhH4l+gOUHMxeuKw1Zn96DxccdpGs+WMdgis8LJc42Qmfnmdw==,iv:QEgbiRV2B5LG7X9KXcln04nUedbV7GiS+3E5AihVbXw=,tag:rGerAwx0FeRLGPBCePdo/w==,type:str]
|
|
||||||
netbird:
|
netbird:
|
||||||
wt0-setupKey: ENC[AES256_GCM,data:166VX+rgzxhar+GFKxA5d8G3/9ewISdv2hUSwvbggyyjwwvE,iv:w8p4gDP6U0ZONX59t2dnglTC9S2dW2TX5A4OoCzRuzM=,tag:zf3jvlERJtM+osBd4ZQjMA==,type:str]
|
wt0-setupKey: ENC[AES256_GCM,data:166VX+rgzxhar+GFKxA5d8G3/9ewISdv2hUSwvbggyyjwwvE,iv:w8p4gDP6U0ZONX59t2dnglTC9S2dW2TX5A4OoCzRuzM=,tag:zf3jvlERJtM+osBd4ZQjMA==,type:str]
|
||||||
dovecot:
|
dovecot:
|
||||||
|
|
@ -18,6 +17,7 @@ stalwart:
|
||||||
ldap: ENC[AES256_GCM,data:ygOPMCNIxvWxE9dPBeKGbA==,iv:t+p1/vjEZNDTw7LcaitzYv2xCPtlf/mmQhqXT1OFKXs=,tag:uPYp259FHZu5fut+Bc9eSA==,type:str]
|
ldap: ENC[AES256_GCM,data:ygOPMCNIxvWxE9dPBeKGbA==,iv:t+p1/vjEZNDTw7LcaitzYv2xCPtlf/mmQhqXT1OFKXs=,tag:uPYp259FHZu5fut+Bc9eSA==,type:str]
|
||||||
acme:
|
acme:
|
||||||
pdns: ENC[AES256_GCM,data:eKnahc8HWboYCUpBuEUrdCMhN8A2N2VN0wrmzcyU2OfMeQaswIYSWV4sBzUbj/pono8PaVxK1FBKsn+Ycd4Y6tcxsAkbPfnPkOsbe0FJpz4t9RFLJBLw3U0YTE/TaURiDYipHnvPGYgyq3AziH/xa4WXZxLHGI0x+a/y3PpWy37rT87DWUT2kktPshdO7Mbwn7nSC78WByXmyaUMkT74Sc0FNmCgfijrHk/ATXGb,iv:y3eRZXFbqqf4VuuqHHYdIoiEa1zqRU1XIlEqooJ28lU=,tag:2bIALJFGZyIZT7fyo/y5Nw==,type:str]
|
pdns: ENC[AES256_GCM,data:eKnahc8HWboYCUpBuEUrdCMhN8A2N2VN0wrmzcyU2OfMeQaswIYSWV4sBzUbj/pono8PaVxK1FBKsn+Ycd4Y6tcxsAkbPfnPkOsbe0FJpz4t9RFLJBLw3U0YTE/TaURiDYipHnvPGYgyq3AziH/xa4WXZxLHGI0x+a/y3PpWy37rT87DWUT2kktPshdO7Mbwn7nSC78WByXmyaUMkT74Sc0FNmCgfijrHk/ATXGb,iv:y3eRZXFbqqf4VuuqHHYdIoiEa1zqRU1XIlEqooJ28lU=,tag:2bIALJFGZyIZT7fyo/y5Nw==,type:str]
|
||||||
|
cloudflare: ENC[AES256_GCM,data:WLdtDbMkq4duAr5hezOGe7SmQ4fY1ks1V3Q/Ma8iIlk1kUc3VGjz4g==,iv:cVKPY+pnyVkvNbzmd3yPRmeT4DyNq6RwvW439PYnAk4=,tag:eTlbEsJ/NYrKolg+TkGWNA==,type:str]
|
||||||
cloudflare:
|
cloudflare:
|
||||||
secret: ENC[AES256_GCM,data:Ktk7BtyjaDeOc4Okflz/ZBYpJ7Uy1SeEBV6ofWcToZsvCDT6aTVxGrAKEHIE/eknvnyWOFeSQv/z/Q==,iv:x2ymbLwa1E2FzdomISeyhchya5bowgieO/XuOnoi81w=,tag:Nj+1DRnbvcwiLiEeu2WaRQ==,type:str]
|
secret: ENC[AES256_GCM,data:Ktk7BtyjaDeOc4Okflz/ZBYpJ7Uy1SeEBV6ofWcToZsvCDT6aTVxGrAKEHIE/eknvnyWOFeSQv/z/Q==,iv:x2ymbLwa1E2FzdomISeyhchya5bowgieO/XuOnoi81w=,tag:Nj+1DRnbvcwiLiEeu2WaRQ==,type:str]
|
||||||
crowdsec:
|
crowdsec:
|
||||||
|
|
@ -29,6 +29,10 @@ pangolin:
|
||||||
env: ENC[AES256_GCM,data:f5Pq+DE9PeRyOKeygREuovlqOMhe/bmTOrBA7Px3Oq+pWG5kGwnxqDdP/PwawJAskQPC9LN+QP6hIPNrJbPyxtk87hoRMb/3X0ggOw==,iv:yqqQizPwf3EfCelczf/7piH9kYiAwGLTtassvQ8oXNs=,tag:UzVuKIS8WZNAHgpLkzc9XA==,type:str]
|
env: ENC[AES256_GCM,data:f5Pq+DE9PeRyOKeygREuovlqOMhe/bmTOrBA7Px3Oq+pWG5kGwnxqDdP/PwawJAskQPC9LN+QP6hIPNrJbPyxtk87hoRMb/3X0ggOw==,iv:yqqQizPwf3EfCelczf/7piH9kYiAwGLTtassvQ8oXNs=,tag:UzVuKIS8WZNAHgpLkzc9XA==,type:str]
|
||||||
velocity: ENC[AES256_GCM,data:Q1Bfiks3/0XsBfouqck9PJr9QmZv/2ayd2qEFNPVz+GW3JpzIPEf2uGn06u7U+ZFtSuV12jG+3fhGhMh+UT3,iv:PHZLyLhNb9NE1J/Tsm35K4g6WMnR/9EYfVrsuDFbaNE=,tag:SCJgjDjaHkLffX8JiWTKsA==,type:str]
|
velocity: ENC[AES256_GCM,data:Q1Bfiks3/0XsBfouqck9PJr9QmZv/2ayd2qEFNPVz+GW3JpzIPEf2uGn06u7U+ZFtSuV12jG+3fhGhMh+UT3,iv:PHZLyLhNb9NE1J/Tsm35K4g6WMnR/9EYfVrsuDFbaNE=,tag:SCJgjDjaHkLffX8JiWTKsA==,type:str]
|
||||||
fabricProxy: ENC[AES256_GCM,data:MXukmKmMBRXCfeW6MBlfJU3cMZ/Y8sysFxiW0g3MOXnEcySu5tN5uuNhuorWNNknemRWayAaozU+d21UWbHmVez1inVQX193EnlTnDaZ,iv:ih2l1rimFqupZlu3NrGaCL7IMM0SPW6YZkMnk8mtXvc=,tag:wxNatJHNB3isKDuprxl7Fw==,type:str]
|
fabricProxy: ENC[AES256_GCM,data:MXukmKmMBRXCfeW6MBlfJU3cMZ/Y8sysFxiW0g3MOXnEcySu5tN5uuNhuorWNNknemRWayAaozU+d21UWbHmVez1inVQX193EnlTnDaZ,iv:ih2l1rimFqupZlu3NrGaCL7IMM0SPW6YZkMnk8mtXvc=,tag:wxNatJHNB3isKDuprxl7Fw==,type:str]
|
||||||
|
stash:
|
||||||
|
session: ENC[AES256_GCM,data:2L05eopoQefgmmuTm3QlxsdS,iv:7Cu3VnsBVkFqkRE/HGoFScy9EGLoHBYs+h0BZBkmUtE=,tag:+0WQMMzA1kAcUmvJaxagBA==,type:str]
|
||||||
|
password: ENC[AES256_GCM,data:vi2pTG4nUhbI,iv:jJfksswJ2Q+XzJ7jRdK/+6CpO+PpZUGeWaG49Keyx10=,tag:89cCqGSFt9oayMJdmg+Zvw==,type:str]
|
||||||
|
jwt: ENC[AES256_GCM,data:w64DI/ygxebc9z1jMc8Va2kcCpHzBpYvzGO5Y5bmkLw8NZcX9iB3qZAnNor7zx1iKV26VGXEwaI28noOeg==,iv:ERYTrZFZWV2DjPE/ZutotHc47T1kLOEU80Y9BoNSMQE=,tag:Pdoo80q/q4quUhnARSd+yw==,type:str]
|
||||||
sops:
|
sops:
|
||||||
age:
|
age:
|
||||||
- recipient: age1uvsvf5ljaezh5wze32p685kfentyle0l2mvysc67yvgct2h4850qqph9lv
|
- recipient: age1uvsvf5ljaezh5wze32p685kfentyle0l2mvysc67yvgct2h4850qqph9lv
|
||||||
|
|
@ -40,7 +44,7 @@ sops:
|
||||||
MEdmWkFwNXZoR1ZVRnQ0aWlkYzZwSmsK0EFecUIdqlDKX08oRCoDQQ3QCX1wzb8w
|
MEdmWkFwNXZoR1ZVRnQ0aWlkYzZwSmsK0EFecUIdqlDKX08oRCoDQQ3QCX1wzb8w
|
||||||
lghDJhWlfuKr+X24GoE4UK04aJVLqVMRRI4BJW+LQXeHS+dWKu3mQA==
|
lghDJhWlfuKr+X24GoE4UK04aJVLqVMRRI4BJW+LQXeHS+dWKu3mQA==
|
||||||
-----END AGE ENCRYPTED FILE-----
|
-----END AGE ENCRYPTED FILE-----
|
||||||
lastmodified: "2026-03-06T08:47:28Z"
|
lastmodified: "2026-03-10T13:46:31Z"
|
||||||
mac: ENC[AES256_GCM,data:1q8l6J6ePg3M4YZAxIjvVMzKurmPQHa93wXIQ3YJirVLaPGyXXczFPKrl9iHTPlwI7Vt1KSQGw1hkO2Q6KWSZgKd3/aKJ+HliRhnqbdOJThwbdHzmVq80mnCzG/Z+yYY45ONPI369bVHydZZT7iEjAWi3ndSkC9KFhyEez3Wa2w=,iv:+w+riNzfF4R+EkTON72AskJscqEMJ1WJoFSiJHPSEGc=,tag:wG4ZuOxXE3dzTezHOu9yzg==,type:str]
|
mac: ENC[AES256_GCM,data:fTDTD8yw3lH2ImMFMpGZscLtq7MbmQu+F7MZt18UFaTbgjGJQ39lIaibXxdv+KlGwsaI2yhI+PVATe65HeVIc1w+IMSh86J73qag+zQ6d7t6lAgjHaD9c2RoLCxhYG2rQGNbk5CNd6a+UWKTwCYVetTl7wID+uW2i6+ElDi2ITg=,iv:2rDyvNFjW2NEbrOgxOb7DNYpbhcogfTPOhf+060qT9w=,tag:BdB46YNDj+LLzkQooUxbQg==,type:str]
|
||||||
unencrypted_suffix: _unencrypted
|
unencrypted_suffix: _unencrypted
|
||||||
version: 3.12.1
|
version: 3.12.1
|
||||||
|
|
|
||||||
|
|
@ -2,6 +2,6 @@
|
||||||
imports = [
|
imports = [
|
||||||
../../../modules/virtualization.nix
|
../../../modules/virtualization.nix
|
||||||
../../../modules/wine.nix
|
../../../modules/wine.nix
|
||||||
./kvm.nix
|
# ./kvm.nix
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -4,6 +4,7 @@ let
|
||||||
inherit (lib) nameValuePair mkForce;
|
inherit (lib) nameValuePair mkForce;
|
||||||
inherit (config.sops) secrets;
|
inherit (config.sops) secrets;
|
||||||
inherit (config.networking) domain;
|
inherit (config.networking) domain;
|
||||||
|
infraIP = "10.10.0.0";
|
||||||
|
|
||||||
splitDNS = listToAttrs (
|
splitDNS = listToAttrs (
|
||||||
map (x: nameValuePair x "127.0.0.1:5359") [
|
map (x: nameValuePair x "127.0.0.1:5359") [
|
||||||
|
|
@ -71,8 +72,8 @@ in
|
||||||
dnsupdate=yes
|
dnsupdate=yes
|
||||||
primary=yes
|
primary=yes
|
||||||
secondary=no
|
secondary=no
|
||||||
allow-dnsupdate-from=10.0.0.0/24
|
allow-dnsupdate-from=${infraIP}/24
|
||||||
allow-axfr-ips=10.0.0.0/24
|
allow-axfr-ips=${infraIP}/24
|
||||||
also-notify=10.0.0.148:53
|
also-notify=10.0.0.148:53
|
||||||
'';
|
'';
|
||||||
secretFile = secrets.powerdns.path;
|
secretFile = secrets.powerdns.path;
|
||||||
|
|
@ -98,7 +99,7 @@ in
|
||||||
dnssecValidation = "off";
|
dnssecValidation = "off";
|
||||||
dns.allowFrom = [
|
dns.allowFrom = [
|
||||||
"127.0.0.0/8"
|
"127.0.0.0/8"
|
||||||
"10.0.0.0/24"
|
"${infraIP}/24"
|
||||||
"192.168.100.0/24"
|
"192.168.100.0/24"
|
||||||
];
|
];
|
||||||
dns.port = 5300;
|
dns.port = 5300;
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,5 @@
|
||||||
|
{
|
||||||
|
imports = [
|
||||||
|
./ldap.nix
|
||||||
|
];
|
||||||
|
}
|
||||||
49
system/dev/dn-server/services/identity-provider/keycloak.nix
Normal file
49
system/dev/dn-server/services/identity-provider/keycloak.nix
Normal file
|
|
@ -0,0 +1,49 @@
|
||||||
|
{ config, ... }:
|
||||||
|
let
|
||||||
|
inherit (config.networking) domain;
|
||||||
|
inherit (config.sops) secrets;
|
||||||
|
hostname = "login";
|
||||||
|
cfg = config.services.keycloak;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
sops.secrets = {
|
||||||
|
"oauth/password" = { };
|
||||||
|
};
|
||||||
|
|
||||||
|
# ==== Keycloak Service ==== #
|
||||||
|
systemd.services.keycloak = {
|
||||||
|
owner = "keycloak";
|
||||||
|
group = "keycloak";
|
||||||
|
mode = "440"; # Read Only
|
||||||
|
};
|
||||||
|
|
||||||
|
# ==== Keycloak Service ==== #
|
||||||
|
services.keycloak = {
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
database = {
|
||||||
|
type = "postgresql";
|
||||||
|
name = "keycloak";
|
||||||
|
createLocally = true;
|
||||||
|
passwordFile = secrets."oauth/password".path;
|
||||||
|
};
|
||||||
|
|
||||||
|
settings = {
|
||||||
|
hostname = "${hostname}.${domain}";
|
||||||
|
proxy-headers = "xforwarded";
|
||||||
|
http-port = 38080;
|
||||||
|
http-enabled = true;
|
||||||
|
health-enabled = true;
|
||||||
|
http-management-port = 38081;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
services.nginx.virtualHosts."${cfg.settings.hostname}" = {
|
||||||
|
useACMEHost = domain;
|
||||||
|
forceSSL = true;
|
||||||
|
|
||||||
|
locations."/".proxyPass = "http://127.0.0.1:${toString cfg.settings.http-port}";
|
||||||
|
locations."/health".proxyPass =
|
||||||
|
"http://127.0.0.1:${toString cfg.settings.http-management-port}/health";
|
||||||
|
};
|
||||||
|
}
|
||||||
184
system/dev/dn-server/services/identity-provider/ldap.nix
Normal file
184
system/dev/dn-server/services/identity-provider/ldap.nix
Normal file
|
|
@ -0,0 +1,184 @@
|
||||||
|
{
|
||||||
|
config,
|
||||||
|
pkgs,
|
||||||
|
lib,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
let
|
||||||
|
inherit (config.networking) domain;
|
||||||
|
inherit (lib)
|
||||||
|
concatStringsSep
|
||||||
|
splitString
|
||||||
|
getExe
|
||||||
|
getExe'
|
||||||
|
;
|
||||||
|
inherit (config.sops) secrets;
|
||||||
|
|
||||||
|
getOlcSuffix = domain: concatStringsSep "," (map (dc: "dc=${dc}") (splitString "." domain));
|
||||||
|
|
||||||
|
ldapHostname = "ldap";
|
||||||
|
olcSuffix = getOlcSuffix domain;
|
||||||
|
adminDN = "cn=admin,ou=people,${olcSuffix}";
|
||||||
|
localDN = "gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth";
|
||||||
|
cfg = config.services.openldap.package;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
|
||||||
|
# ==== Admin Password ==== #
|
||||||
|
sops.secrets."ldap/password" = { };
|
||||||
|
|
||||||
|
systemd.services.openldap-pre =
|
||||||
|
let
|
||||||
|
passwordPath = cfg.settings.children."olcDatabase={1}mdb".attrs.olcRootPW.path;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
before = [ "openldap.service" ];
|
||||||
|
requiredBy = [ "openldap.service" ];
|
||||||
|
serviceConfig = {
|
||||||
|
User = "openldap";
|
||||||
|
ExecStart = "${getExe pkgs.bash} -c '${getExe' cfg.package "slappasswd"} -T ${secrets."ldap/password".path} > ${passwordPath}";
|
||||||
|
ExecStartPost = [
|
||||||
|
"${getExe' pkgs.busybox.out "chmod"} 700 ${passwordPath}"
|
||||||
|
];
|
||||||
|
Type = "oneshot";
|
||||||
|
StateDirectory = [
|
||||||
|
"openldap"
|
||||||
|
];
|
||||||
|
StateDirectoryMode = "700";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
# ==== TLS Cert ===== #
|
||||||
|
systemd.services.openldap = {
|
||||||
|
wants = [ "acme-finished-${domain}.target" ];
|
||||||
|
serviceConfig.LoadCredential =
|
||||||
|
let
|
||||||
|
certDir = config.security.acme.certs."${domain}".directory;
|
||||||
|
in
|
||||||
|
[
|
||||||
|
"full.pem:${certDir}/full.pem"
|
||||||
|
"cert.pem:${certDir}/cert.pem"
|
||||||
|
"key.pem:${certDir}/key.pem"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
# ===== Openldap Service ==== #
|
||||||
|
services.openldap =
|
||||||
|
let
|
||||||
|
credsDir = "/run/credentials/openldap.service";
|
||||||
|
caDir = "${credsDir}/full.pem";
|
||||||
|
certDir = "${credsDir}/cert.pem";
|
||||||
|
keyDir = "${credsDir}/key.pem";
|
||||||
|
in
|
||||||
|
{
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
urlList = [
|
||||||
|
"ldap:///"
|
||||||
|
"ldapi:///"
|
||||||
|
"ldaps:///" # TLS
|
||||||
|
];
|
||||||
|
|
||||||
|
settings = {
|
||||||
|
attrs = {
|
||||||
|
olcLogLevel = "conns config";
|
||||||
|
|
||||||
|
olcTLSCACertificateFile = caDir;
|
||||||
|
olcTLSCertificateFile = certDir;
|
||||||
|
olcTLSCertificateKeyFile = keyDir;
|
||||||
|
olcTLSCipherSuite = "HIGH:MEDIUM:+3DES:+RC4:+aNULL";
|
||||||
|
olcTLSCRLCheck = "none";
|
||||||
|
olcTLSVerifyClient = "never";
|
||||||
|
olcTLSProtocolMin = "3.1";
|
||||||
|
};
|
||||||
|
|
||||||
|
children = {
|
||||||
|
"cn=schema".includes = [
|
||||||
|
"${cfg.package}/etc/schema/core.ldif"
|
||||||
|
"${cfg.package}/etc/schema/cosine.ldif"
|
||||||
|
"${cfg.package}/etc/schema/inetorgperson.ldif"
|
||||||
|
];
|
||||||
|
|
||||||
|
"olcDatabase={1}mdb" = {
|
||||||
|
attrs = {
|
||||||
|
objectClass = [
|
||||||
|
"olcDatabaseConfig"
|
||||||
|
"olcMdbConfig"
|
||||||
|
];
|
||||||
|
|
||||||
|
olcDatabase = "{1}mdb";
|
||||||
|
olcDbDirectory = "/var/lib/openldap/data";
|
||||||
|
|
||||||
|
olcSuffix = olcSuffix;
|
||||||
|
|
||||||
|
olcRootDN = "cn=admin,${olcSuffix}";
|
||||||
|
olcRootPW.path = "/var/lib/openldap/olcPasswd";
|
||||||
|
|
||||||
|
olcAccess = [
|
||||||
|
''
|
||||||
|
{0}to attrs=userPassword
|
||||||
|
by peername="${localDN}" manage
|
||||||
|
by dn.exact="${adminDN}" manage
|
||||||
|
by self write
|
||||||
|
by anonymous auth
|
||||||
|
by * none
|
||||||
|
''
|
||||||
|
''
|
||||||
|
{1}to *
|
||||||
|
by peername="${localDN}" manage
|
||||||
|
by dn.exact="${adminDN}" manage
|
||||||
|
by self read
|
||||||
|
by anonymous auth
|
||||||
|
by * none
|
||||||
|
''
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
children = {
|
||||||
|
# ==== Password Policy ==== #
|
||||||
|
"olcOverlay={2}ppolicy".attrs = {
|
||||||
|
objectClass = [
|
||||||
|
"olcOverlayConfig"
|
||||||
|
"olcPPolicyConfig"
|
||||||
|
"top"
|
||||||
|
];
|
||||||
|
olcOverlay = "{2}ppolicy";
|
||||||
|
olcPPolicyHashCleartext = "TRUE";
|
||||||
|
};
|
||||||
|
|
||||||
|
# ==== Group ==== #
|
||||||
|
"olcOverlay={3}memberof".attrs = {
|
||||||
|
objectClass = [
|
||||||
|
"olcOverlayConfig"
|
||||||
|
"olcMemberOf"
|
||||||
|
"top"
|
||||||
|
];
|
||||||
|
olcOverlay = "{3}memberof";
|
||||||
|
olcMemberOfRefInt = "TRUE";
|
||||||
|
olcMemberOfDangling = "ignore";
|
||||||
|
olcMemberOfGroupOC = "groupOfNames";
|
||||||
|
olcMemberOfMemberAD = "member";
|
||||||
|
olcMemberOfMemberOfAD = "memberOf";
|
||||||
|
};
|
||||||
|
|
||||||
|
"olcOverlay={4}refint".attrs = {
|
||||||
|
objectClass = [
|
||||||
|
"olcOverlayConfig"
|
||||||
|
"olcRefintConfig"
|
||||||
|
"top"
|
||||||
|
];
|
||||||
|
olcOverlay = "{4}refint";
|
||||||
|
olcRefintAttribute = [
|
||||||
|
"memberof"
|
||||||
|
"member"
|
||||||
|
"manager"
|
||||||
|
"owner"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
}
|
||||||
|
|
@ -35,6 +35,7 @@ in
|
||||||
];
|
];
|
||||||
|
|
||||||
services.netbird = {
|
services.netbird = {
|
||||||
|
useRoutingFeatures = "server";
|
||||||
ui.enable = mkForce false;
|
ui.enable = mkForce false;
|
||||||
|
|
||||||
clients.wt0 = {
|
clients.wt0 = {
|
||||||
|
|
|
||||||
|
|
@ -59,6 +59,7 @@ in
|
||||||
];
|
];
|
||||||
|
|
||||||
services.nextcloud = {
|
services.nextcloud = {
|
||||||
|
package = pkgs.nextcloud32;
|
||||||
extraApps = {
|
extraApps = {
|
||||||
inherit (config.services.nextcloud.package.packages.apps) music spreed;
|
inherit (config.services.nextcloud.package.packages.apps) music spreed;
|
||||||
|
|
||||||
|
|
|
||||||
187
system/dev/public/dn/networkmanager.nix
Normal file
187
system/dev/public/dn/networkmanager.nix
Normal file
|
|
@ -0,0 +1,187 @@
|
||||||
|
{ config, ... }:
|
||||||
|
{
|
||||||
|
sops.secrets."networkmanager" = {
|
||||||
|
sopsFile = ../sops/dn-secret.yaml;
|
||||||
|
};
|
||||||
|
|
||||||
|
networking.networkmanager = {
|
||||||
|
ensureProfiles = {
|
||||||
|
environmentFiles = [
|
||||||
|
config.sops.secrets."networkmanager".path
|
||||||
|
];
|
||||||
|
|
||||||
|
profiles = {
|
||||||
|
"CSIT VPN" = {
|
||||||
|
connection = {
|
||||||
|
autoconnect = "false";
|
||||||
|
id = "CSIT VPN";
|
||||||
|
type = "vpn";
|
||||||
|
uuid = "7aa21c9d-4004-49e8-af61-827850fb4370";
|
||||||
|
};
|
||||||
|
ipv4 = {
|
||||||
|
method = "auto";
|
||||||
|
ignore-auto-dns = true;
|
||||||
|
routes = "10.1.0.0/16";
|
||||||
|
never-default = true;
|
||||||
|
};
|
||||||
|
ipv6 = {
|
||||||
|
addr-gen-mode = "stable-privacy";
|
||||||
|
method = "auto";
|
||||||
|
ignore-auto-dns = true;
|
||||||
|
};
|
||||||
|
proxy = { };
|
||||||
|
vpn = {
|
||||||
|
gateway = "$CSIT_VPN_GATEWAY";
|
||||||
|
otp-flags = "0";
|
||||||
|
password-flags = "0";
|
||||||
|
realm = "$CSIT_VPN_REALM";
|
||||||
|
service-type = "org.freedesktop.NetworkManager.fortisslvpn";
|
||||||
|
trusted-cert = "$CSIT_VPN_TRUST_CERT";
|
||||||
|
user = "$CSIT_VPN_IDENTITY";
|
||||||
|
};
|
||||||
|
vpn-secrets = {
|
||||||
|
password = "$CSIT_VPN_PASSWORD";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
"CSIT VPN (test)" = {
|
||||||
|
connection = {
|
||||||
|
autoconnect = "false";
|
||||||
|
id = "CSIT VPN (test)";
|
||||||
|
type = "vpn";
|
||||||
|
uuid = "561552b7-d7b0-443e-b817-8c8c18367542";
|
||||||
|
};
|
||||||
|
ipv4 = {
|
||||||
|
method = "auto";
|
||||||
|
ignore-auto-dns = true;
|
||||||
|
routes = "10.2.0.0/16";
|
||||||
|
never-default = true;
|
||||||
|
};
|
||||||
|
ipv6 = {
|
||||||
|
addr-gen-mode = "stable-privacy";
|
||||||
|
ignore-auto-dns = true;
|
||||||
|
method = "auto";
|
||||||
|
};
|
||||||
|
proxy = { };
|
||||||
|
vpn = {
|
||||||
|
gateway = "$CSIT_VPN_TEST_GATEWAY";
|
||||||
|
otp-flags = "0";
|
||||||
|
password-flags = "0";
|
||||||
|
realm = "$CSIT_VPN_TEST_REALM";
|
||||||
|
service-type = "org.freedesktop.NetworkManager.fortisslvpn";
|
||||||
|
trusted-cert = "$CSIT_VPN_TEST_TRUST_CERT";
|
||||||
|
user = "$CSIT_VPN_TEST_IDENTITY";
|
||||||
|
};
|
||||||
|
vpn-secrets = {
|
||||||
|
password = "$CSIT_VPN_TEST_PASSWORD";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
NYCU = {
|
||||||
|
"802-1x" = {
|
||||||
|
eap = "peap";
|
||||||
|
identity = "$NYCU_WIFI_IDENTITY";
|
||||||
|
password = "$NYCU_WIFI_PASSWORD";
|
||||||
|
phase2-auth = "mschapv2";
|
||||||
|
};
|
||||||
|
connection = {
|
||||||
|
id = "NYCU";
|
||||||
|
interface-name = "wlp0s20f3";
|
||||||
|
type = "wifi";
|
||||||
|
};
|
||||||
|
ipv4 = {
|
||||||
|
method = "auto";
|
||||||
|
};
|
||||||
|
ipv6 = {
|
||||||
|
addr-gen-mode = "default";
|
||||||
|
method = "auto";
|
||||||
|
};
|
||||||
|
proxy = { };
|
||||||
|
wifi = {
|
||||||
|
mode = "infrastructure";
|
||||||
|
ssid = "NYCU";
|
||||||
|
};
|
||||||
|
wifi-security = {
|
||||||
|
key-mgmt = "wpa-eap";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
DACDAC_5G = {
|
||||||
|
connection = {
|
||||||
|
id = "DACDAC_5G";
|
||||||
|
interface-name = "wlp0s20f3";
|
||||||
|
type = "wifi";
|
||||||
|
};
|
||||||
|
ipv4 = {
|
||||||
|
method = "auto";
|
||||||
|
};
|
||||||
|
ipv6 = {
|
||||||
|
addr-gen-mode = "default";
|
||||||
|
method = "auto";
|
||||||
|
};
|
||||||
|
proxy = { };
|
||||||
|
wifi = {
|
||||||
|
mode = "infrastructure";
|
||||||
|
ssid = "DACDAC_5G";
|
||||||
|
};
|
||||||
|
wifi-security = {
|
||||||
|
auth-alg = "open";
|
||||||
|
key-mgmt = "wpa-psk";
|
||||||
|
psk = "$DACDAC_5G_WIFI_PASSWORD";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
CSIT = {
|
||||||
|
"802-1x" = {
|
||||||
|
eap = "peap";
|
||||||
|
identity = "$CSIT_WIFI_IDENTITY";
|
||||||
|
password = "$CSIT_WIFI_PASSWORD";
|
||||||
|
phase2-auth = "gtc";
|
||||||
|
};
|
||||||
|
connection = {
|
||||||
|
autoconnect-priority = "10";
|
||||||
|
id = "CSIT";
|
||||||
|
interface-name = "wlp0s20f3";
|
||||||
|
type = "wifi";
|
||||||
|
};
|
||||||
|
ipv4 = {
|
||||||
|
method = "auto";
|
||||||
|
};
|
||||||
|
ipv6 = {
|
||||||
|
addr-gen-mode = "default";
|
||||||
|
method = "auto";
|
||||||
|
};
|
||||||
|
proxy = { };
|
||||||
|
wifi = {
|
||||||
|
mode = "infrastructure";
|
||||||
|
ssid = "CSIT";
|
||||||
|
};
|
||||||
|
wifi-security = {
|
||||||
|
key-mgmt = "wpa-eap";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
YCC0121_5G = {
|
||||||
|
connection = {
|
||||||
|
id = "YCC0121_5G";
|
||||||
|
interface-name = "wlp0s20f3";
|
||||||
|
type = "wifi";
|
||||||
|
uuid = "aa650a47-b76c-4782-979e-c2f71dc31c8c";
|
||||||
|
};
|
||||||
|
ipv4 = {
|
||||||
|
method = "auto";
|
||||||
|
};
|
||||||
|
ipv6 = {
|
||||||
|
addr-gen-mode = "default";
|
||||||
|
method = "auto";
|
||||||
|
};
|
||||||
|
proxy = { };
|
||||||
|
wifi = {
|
||||||
|
mode = "infrastructure";
|
||||||
|
ssid = "YCC0121_5G";
|
||||||
|
};
|
||||||
|
wifi-security = {
|
||||||
|
auth-alg = "open";
|
||||||
|
key-mgmt = "wpa-psk";
|
||||||
|
psk = "$YCC0121_5G_WIFI_PASSWORD";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
@ -5,5 +5,6 @@
|
||||||
../yubikey.nix
|
../yubikey.nix
|
||||||
../ntfy.nix
|
../ntfy.nix
|
||||||
../wm.nix
|
../wm.nix
|
||||||
|
../networkmanager.nix
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,7 @@
|
||||||
ntfy: ENC[AES256_GCM,data:7m7hwmDWu6qP/mX7QujXPiDAmRC542CKyWzFaOL5sHza,iv:nn1F44LSFmrV2USRDD0z8CNfUhi40LZnvoU3j0nklcU=,tag:WhqQpThDaG10kNTk1tZxOQ==,type:str]
|
ntfy: ENC[AES256_GCM,data:7m7hwmDWu6qP/mX7QujXPiDAmRC542CKyWzFaOL5sHza,iv:nn1F44LSFmrV2USRDD0z8CNfUhi40LZnvoU3j0nklcU=,tag:WhqQpThDaG10kNTk1tZxOQ==,type:str]
|
||||||
u2f_keys: ENC[AES256_GCM,data:0EofFtgar18YzbzXiT6NdC9nwMTQoYkeU8snRTwhUX2Hz+k4B46839xZet4Df5a8xpaB2CuoPvRkEMSxknBWGKkK+gZr2m+zogbpMTGQVTYqmqlnunywrhe9u9FQ5D1hwU4PYcOgDqox5dw4QMg/AUontu5BYTG3WKCCTDVIL+i6PejwXKcfoKHd9G1K2QHV33S40EM4/jjijgxW+NoO6vkEWIwxih/DxQ4YZYTHHBZXhKRD7Hwhikd6G3Vs3/xD/UOVVJKtkyn1wKNQf+O30Q2LNOhDQ8/weNfN9IAMpVtRqvEtFXA2rfp9zI7TY1iuSN9nN9hYuZJeCktvK1WiRvspU5wYn2jDtM83zCA8Udnq1XJbsGEv2aA3SYyxoldtkjFcjlupGa1lJiaANxhmpOfJp0IIkeXqnIkLE/FzRFiced58H1UV6InlH5S/Lz42854ec/jDlgvzCnDoWIsgfgQf+KmwRHznzeepPW7S3tyB/jbJETEfCJfZ3E6YmeAMWd85drTKsySjBGiM7mueb4thGstfgnAEO/Y3PuVc/qGS1j95lUc0w0zbr3VzwibxCsS02PgMIUE5gZPEllknbhh6QiqbS2AtTAb9pIwrpYfEmcZU2blofQ8WzkLEjqNnRGaDXzgIEw4OirM0tSaFGmT9Vy1XN4yvSVssjsW/wXg19U4S/6FS+zOvyg+lIkT3NOfu5dKQecz8cH0czEN5MoVj3fm5LBhFmDOawP5AAA8dLafMEepxbBIGr/9nzDP17trMfzFf78hymHTgQk/qFb6oWl9Ai1dFZRwHO7HcXpBveTpPMCaeNOjcvRrvKsm2HSzsWPCVsfX6nrmNjqyFJXpPuuNaPezclL/ApPdEXpi9Q+aVHAgjllBLAH/R8UJu71cJAo+x7TCWykG31xLO0xodtJ5Lwk3O1lMnznnQXT/fCVaFYV24OT/nS7hQOtDvlJOCfmSpZTmZxX31xF4Gt0Auok+0uPJzDfbFQH9WwifXn6F8ixdsLK/VJMEk8EZbHpkNSV6hzWJkiOeJCDl7SBKEcQ+FizYSfZuOcVEt83ScJuVa7IScVLdatnTTTpR4c5GASYLr3lahqYwhuZGcQEUIwjDXu8Oymo0Sbvnmev60wY5Q3BEMSX1iwt3QWdCe5Kzq2vEUQHP9s6lg7DgOeIA2xQRK5siqwOhw9i1qaHbPG+1yTFOx7gRu0+yBy2Qzkwsc9naD8Ce0hpwQmu4Nvpd5TjMnS51ljDMWBok5evdOtGeWL9mDz6VdxtuHbcBShmEOk+lfKKjpDeK5319veBX5ugCm8WXeDmIIhG12gI07xRVzPaeYEhnRG2pHy/+JdjlyGeh0oHCJOYPhxtwVbqXwmH83BGn3H05bdIWEjXs=,iv:pAdO+Uja/Zyf5uLMa9zbKvEMoOOjQgkqHYnEH+Bxd5k=,tag:mYngzcv0bGwVJBHOR6D4uw==,type:str]
|
u2f_keys: ENC[AES256_GCM,data:0EofFtgar18YzbzXiT6NdC9nwMTQoYkeU8snRTwhUX2Hz+k4B46839xZet4Df5a8xpaB2CuoPvRkEMSxknBWGKkK+gZr2m+zogbpMTGQVTYqmqlnunywrhe9u9FQ5D1hwU4PYcOgDqox5dw4QMg/AUontu5BYTG3WKCCTDVIL+i6PejwXKcfoKHd9G1K2QHV33S40EM4/jjijgxW+NoO6vkEWIwxih/DxQ4YZYTHHBZXhKRD7Hwhikd6G3Vs3/xD/UOVVJKtkyn1wKNQf+O30Q2LNOhDQ8/weNfN9IAMpVtRqvEtFXA2rfp9zI7TY1iuSN9nN9hYuZJeCktvK1WiRvspU5wYn2jDtM83zCA8Udnq1XJbsGEv2aA3SYyxoldtkjFcjlupGa1lJiaANxhmpOfJp0IIkeXqnIkLE/FzRFiced58H1UV6InlH5S/Lz42854ec/jDlgvzCnDoWIsgfgQf+KmwRHznzeepPW7S3tyB/jbJETEfCJfZ3E6YmeAMWd85drTKsySjBGiM7mueb4thGstfgnAEO/Y3PuVc/qGS1j95lUc0w0zbr3VzwibxCsS02PgMIUE5gZPEllknbhh6QiqbS2AtTAb9pIwrpYfEmcZU2blofQ8WzkLEjqNnRGaDXzgIEw4OirM0tSaFGmT9Vy1XN4yvSVssjsW/wXg19U4S/6FS+zOvyg+lIkT3NOfu5dKQecz8cH0czEN5MoVj3fm5LBhFmDOawP5AAA8dLafMEepxbBIGr/9nzDP17trMfzFf78hymHTgQk/qFb6oWl9Ai1dFZRwHO7HcXpBveTpPMCaeNOjcvRrvKsm2HSzsWPCVsfX6nrmNjqyFJXpPuuNaPezclL/ApPdEXpi9Q+aVHAgjllBLAH/R8UJu71cJAo+x7TCWykG31xLO0xodtJ5Lwk3O1lMnznnQXT/fCVaFYV24OT/nS7hQOtDvlJOCfmSpZTmZxX31xF4Gt0Auok+0uPJzDfbFQH9WwifXn6F8ixdsLK/VJMEk8EZbHpkNSV6hzWJkiOeJCDl7SBKEcQ+FizYSfZuOcVEt83ScJuVa7IScVLdatnTTTpR4c5GASYLr3lahqYwhuZGcQEUIwjDXu8Oymo0Sbvnmev60wY5Q3BEMSX1iwt3QWdCe5Kzq2vEUQHP9s6lg7DgOeIA2xQRK5siqwOhw9i1qaHbPG+1yTFOx7gRu0+yBy2Qzkwsc9naD8Ce0hpwQmu4Nvpd5TjMnS51ljDMWBok5evdOtGeWL9mDz6VdxtuHbcBShmEOk+lfKKjpDeK5319veBX5ugCm8WXeDmIIhG12gI07xRVzPaeYEhnRG2pHy/+JdjlyGeh0oHCJOYPhxtwVbqXwmH83BGn3H05bdIWEjXs=,iv:pAdO+Uja/Zyf5uLMa9zbKvEMoOOjQgkqHYnEH+Bxd5k=,tag:mYngzcv0bGwVJBHOR6D4uw==,type:str]
|
||||||
netrc: ENC[AES256_GCM,data:UaTMV459ApE94Lg/MsbEttaBskwTgQ/UJRejFa2KjxMQ1CKF38A6BOZip/yeE/lrDy5y4WblS7Hru38ytkPGCikZIjsdn61sLMstw1RQAHs=,iv:imk+pjmPu7soPImWQQHYapy46SvYTyWj/+4gwu9I/18=,tag:VhOCAWtUd/AC/DBxuNmt8A==,type:str]
|
netrc: ENC[AES256_GCM,data:UaTMV459ApE94Lg/MsbEttaBskwTgQ/UJRejFa2KjxMQ1CKF38A6BOZip/yeE/lrDy5y4WblS7Hru38ytkPGCikZIjsdn61sLMstw1RQAHs=,iv:imk+pjmPu7soPImWQQHYapy46SvYTyWj/+4gwu9I/18=,tag:VhOCAWtUd/AC/DBxuNmt8A==,type:str]
|
||||||
|
networkmanager: ENC[AES256_GCM,data:wp142VzpyhaYKb9HuR/CCuZLdhv4tWu4AMeqkyMus+uxTadVMep191HRjpoOPvusVGjYH7C9RK7xNHVP06T1D2G3NvSC1CrRGPx6qU7QXImdF+7s3XPp/MMe9kkxLx9NwyvkpK926T0F7nQ7h6qwBFC/VwNUrgDLvGy4OiB4U8zYhWtpKwss99CgrnzBy4imxq9kiDXCnqWtDjKl/nGInD+3TBDpayH0j3Uyanq5LzsB/Yjxr2Zpg7abU/aQs1MCHrUC/YW0yaT3slyJZpCnKXAVEoYpF5ReSIxESJ1gpiTa9ru17XSfbjmbC/PuS1Pw/iX5iz4LcqBj0t5Hvum+IC482kN1FnHFcFex8FnvSHEOEzGYF3sjmq4AGtRY2kge9cGT+srcvf9ckd0BQLCG0Dvo2QDDghWgXWwix0dcPeubRF57yAv3ZcCgPmAV0WTseejZREz2JTjbqbtCBkXyaRRpseqKaskxwx7bPtFyMFstcXdHFhG1c285qgnvRnlcXbvjrgsV03lfBbss6ddDiglqvmSvqumRqGsrnUv8JbBpzb0s8XjII98sRSI6nj7wLhmZP62v4DV/DdLPuPEW5BaVm/8AvSZL5cruTXPx+LWF3iNsHCtdnHU2IxF2FoLTQFfSGazkY2MXPxoWKpwUvZW+B6YHLHYce3oQKerzoqEREdKvo8sdSa/jVjSb+ANMMkp6ePOmsKWj9rcl9kDCU+zGyYnnOVpCcB3NJApiWVkcFLR/CM7HFuyH3BdGW2gmyLRFTdVi5KVqs5zGVwTUmwOhIQhjnbec3toX+gRXbbCZXjmT/mY=,iv:9CGLFND2LS+X6dHZpmfp47khuTvA08yVPFI/a6z6OJs=,tag:ietrPoynN4ri0LzzonU1Kg==,type:str]
|
||||||
sops:
|
sops:
|
||||||
age:
|
age:
|
||||||
- recipient: age1uvsvf5ljaezh5wze32p685kfentyle0l2mvysc67yvgct2h4850qqph9lv
|
- recipient: age1uvsvf5ljaezh5wze32p685kfentyle0l2mvysc67yvgct2h4850qqph9lv
|
||||||
|
|
@ -30,7 +31,7 @@ sops:
|
||||||
QWV3VjRjNC9RaXNwbDdLWmVQNS94UzAKeLZSqcXRwkVoUUKd4PuRusbJwFlubdJy
|
QWV3VjRjNC9RaXNwbDdLWmVQNS94UzAKeLZSqcXRwkVoUUKd4PuRusbJwFlubdJy
|
||||||
kcxGMzvfT0BMYDp61vV+F5Vh4TkgddCzp6Lphbb/6orkWWpjmE9I4g==
|
kcxGMzvfT0BMYDp61vV+F5Vh4TkgddCzp6Lphbb/6orkWWpjmE9I4g==
|
||||||
-----END AGE ENCRYPTED FILE-----
|
-----END AGE ENCRYPTED FILE-----
|
||||||
lastmodified: "2026-03-06T08:47:47Z"
|
lastmodified: "2026-03-11T07:46:11Z"
|
||||||
mac: ENC[AES256_GCM,data:RMHOwVwL4tGKWOOOjh9OlAFnJxDGcQvgLb8vTACDAY5Mky+0+8gL1GO7hK+r0G7tbfMB4A/4CHeZtHqoXWjfhIEoDLVkkpAmckMpHVMd7bNlhvL0fkzi5YOLPgW8RCRO6VCXJM3Hb0v6N0NjcK37jdZdYJyr6DZI6aV3oY72mz0=,iv:CBAUv12RSLNY73JBZT4iHpRTLpRIm6a6mo1pz+lYEwc=,tag:l7RZNUzbZpG0Wkntl0qfLQ==,type:str]
|
mac: ENC[AES256_GCM,data:7FCPDFjK9aubZO377fpy0BdnaOtB4InxCjFhMmzXRw3IJIIBHRRaXvfUw+ph9xhLkImYvueC3pr3Me0NKgww5cdKPLhbnvjffrLOVghVr39pMoo9Q+KTPfvIWAGQIHOQeQvqhaCwjLcL4BKWKcn38bAvALSV+sxo+elgWOXXIkg=,iv:ALKjtFhjH5HPqjzcj1j7hWMBEv9fsIlbnapLay0gz2o=,tag:N52iWdWwM0/x5gyr1Qb+4g==,type:str]
|
||||||
unencrypted_suffix: _unencrypted
|
unencrypted_suffix: _unencrypted
|
||||||
version: 3.12.1
|
version: 3.12.1
|
||||||
|
|
|
||||||
|
|
@ -14,7 +14,7 @@ in
|
||||||
{
|
{
|
||||||
systemConf = {
|
systemConf = {
|
||||||
inherit hostname username;
|
inherit hostname username;
|
||||||
domain = "net.dn";
|
domain = "dnywe.com";
|
||||||
enableHomeManager = true;
|
enableHomeManager = true;
|
||||||
windowManager = "niri";
|
windowManager = "niri";
|
||||||
face = pkgs.fetchurl {
|
face = pkgs.fetchurl {
|
||||||
|
|
@ -33,8 +33,18 @@ in
|
||||||
./network
|
./network
|
||||||
./home
|
./home
|
||||||
../../modules/shells/noctalia
|
../../modules/shells/noctalia
|
||||||
|
../../modules/sunshine.nix
|
||||||
];
|
];
|
||||||
|
|
||||||
|
services.openssh.settings.PasswordAuthentication = true;
|
||||||
|
|
||||||
|
services.displayManager.sddm.autoLogin.relogin = true;
|
||||||
|
|
||||||
|
services.displayManager.autoLogin = {
|
||||||
|
enable = true;
|
||||||
|
user = "${username}";
|
||||||
|
};
|
||||||
|
|
||||||
users.users.root.openssh.authorizedKeys.keys = [
|
users.users.root.openssh.authorizedKeys.keys = [
|
||||||
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIJSAOufpee7f8D8ONIIGU3qsN+8+DGO7BfZnEOTYqtQ5 danny@pre7780.dn"
|
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIJSAOufpee7f8D8ONIIGU3qsN+8+DGO7BfZnEOTYqtQ5 danny@pre7780.dn"
|
||||||
];
|
];
|
||||||
|
|
|
||||||
|
|
@ -4,6 +4,7 @@
|
||||||
...
|
...
|
||||||
}:
|
}:
|
||||||
let
|
let
|
||||||
|
inherit (config.systemConf) username;
|
||||||
serverCfg = self.nixosConfigurations.dn-server.config;
|
serverCfg = self.nixosConfigurations.dn-server.config;
|
||||||
cfg = config.services.netbird;
|
cfg = config.services.netbird;
|
||||||
domain = serverCfg.services.netbird.server.domain;
|
domain = serverCfg.services.netbird.server.domain;
|
||||||
|
|
@ -14,6 +15,8 @@ in
|
||||||
mode = "400";
|
mode = "400";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
users.users.${username}.extraGroups = [ "netbird-wt0" ];
|
||||||
|
|
||||||
services.netbird = {
|
services.netbird = {
|
||||||
clients.wt0 = {
|
clients.wt0 = {
|
||||||
openFirewall = true;
|
openFirewall = true;
|
||||||
|
|
@ -21,6 +24,7 @@ in
|
||||||
port = 51820;
|
port = 51820;
|
||||||
environment = {
|
environment = {
|
||||||
NB_MANAGEMENT_URL = "https://${domain}";
|
NB_MANAGEMENT_URL = "https://${domain}";
|
||||||
|
NB_ADMIN_URL = "https://${domain}";
|
||||||
};
|
};
|
||||||
login = {
|
login = {
|
||||||
enable = true;
|
enable = true;
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,24 @@
|
||||||
{ lib, ... }:
|
{ lib, pkgs, ... }:
|
||||||
{
|
{
|
||||||
|
environment.systemPackages = with pkgs; [
|
||||||
|
openfortivpn
|
||||||
|
];
|
||||||
|
|
||||||
networking = {
|
networking = {
|
||||||
networkmanager.enable = true;
|
networkmanager = {
|
||||||
|
enable = true;
|
||||||
|
plugins = with pkgs; [
|
||||||
|
networkmanager-fortisslvpn
|
||||||
|
networkmanager-openvpn
|
||||||
|
networkmanager-openconnect
|
||||||
|
networkmanager-ssh
|
||||||
|
networkmanager-sstp
|
||||||
|
networkmanager-l2tp
|
||||||
|
networkmanager-vpnc
|
||||||
|
networkmanager-strongswan
|
||||||
|
networkmanager-iodine
|
||||||
|
];
|
||||||
|
};
|
||||||
enableIPv6 = lib.mkDefault false;
|
enableIPv6 = lib.mkDefault false;
|
||||||
firewall = {
|
firewall = {
|
||||||
enable = lib.mkDefault true;
|
enable = lib.mkDefault true;
|
||||||
|
|
|
||||||
|
|
@ -24,8 +24,8 @@ in
|
||||||
btop
|
btop
|
||||||
eza
|
eza
|
||||||
fzf
|
fzf
|
||||||
neofetch
|
|
||||||
ripgrep
|
ripgrep
|
||||||
|
fastfetch
|
||||||
tree
|
tree
|
||||||
tldr # Alternative for man
|
tldr # Alternative for man
|
||||||
wget
|
wget
|
||||||
|
|
|
||||||
|
|
@ -3,18 +3,54 @@ let
|
||||||
inherit (lib) mkForce;
|
inherit (lib) mkForce;
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
backgroundOpacity = mkForce 0.25;
|
|
||||||
capsuleOpacity = mkForce 0;
|
capsuleOpacity = mkForce 0;
|
||||||
|
backgroundOpacity = mkForce 0.25;
|
||||||
|
autoHideDelay = 500;
|
||||||
|
autoShowDelay = 150;
|
||||||
|
barType = "floating";
|
||||||
|
capsuleColorKey = "none";
|
||||||
|
contentPadding = 2;
|
||||||
density = "comfortable";
|
density = "comfortable";
|
||||||
exclusive = true;
|
displayMode = "always_visible";
|
||||||
floating = true;
|
floating = true;
|
||||||
marginHorizontal = 0.25;
|
fontScale = 1;
|
||||||
marginVertical = 0.25;
|
frameRadius = 12;
|
||||||
|
frameThickness = 8;
|
||||||
|
hideOnOverview = false;
|
||||||
|
marginHorizontal = 5;
|
||||||
|
marginVertical = 5;
|
||||||
|
middleClickAction = "none";
|
||||||
|
middleClickCommand = "";
|
||||||
|
middleClickFollowMouse = false;
|
||||||
|
monitors = [ ];
|
||||||
|
mouseWheelAction = "none";
|
||||||
|
mouseWheelWrap = true;
|
||||||
outerCorners = false;
|
outerCorners = false;
|
||||||
position = "top";
|
position = "top";
|
||||||
|
reverseScroll = false;
|
||||||
|
rightClickAction = "controlCenter";
|
||||||
|
rightClickCommand = "";
|
||||||
|
rightClickFollowMouse = true;
|
||||||
|
screenOverrides = [ ];
|
||||||
showCapsule = true;
|
showCapsule = true;
|
||||||
|
showOnWorkspaceSwitch = true;
|
||||||
|
showOutline = false;
|
||||||
|
useSeparateOpacity = false;
|
||||||
|
widgetSpacing = 6;
|
||||||
widgets = {
|
widgets = {
|
||||||
center = [
|
center = [
|
||||||
|
{
|
||||||
|
defaultSettings = {
|
||||||
|
activeColor = "primary";
|
||||||
|
enableToast = true;
|
||||||
|
hideInactive = false;
|
||||||
|
iconSpacing = 4;
|
||||||
|
inactiveColor = "none";
|
||||||
|
micFilterRegex = "";
|
||||||
|
removeMargins = false;
|
||||||
|
};
|
||||||
|
id = "plugin:privacy-indicator";
|
||||||
|
}
|
||||||
{
|
{
|
||||||
colorizeIcons = false;
|
colorizeIcons = false;
|
||||||
hideMode = "hidden";
|
hideMode = "hidden";
|
||||||
|
|
@ -22,13 +58,19 @@ in
|
||||||
maxWidth = 145;
|
maxWidth = 145;
|
||||||
scrollingMode = "hover";
|
scrollingMode = "hover";
|
||||||
showIcon = true;
|
showIcon = true;
|
||||||
|
textColor = "none";
|
||||||
useFixedWidth = false;
|
useFixedWidth = false;
|
||||||
}
|
}
|
||||||
];
|
];
|
||||||
left = [
|
left = [
|
||||||
{
|
{
|
||||||
|
colorizeSystemIcon = "none";
|
||||||
|
enableColorization = false;
|
||||||
|
generalTooltipText = "";
|
||||||
|
hideMode = "alwaysExpanded";
|
||||||
icon = "rocket";
|
icon = "rocket";
|
||||||
id = "CustomButton";
|
id = "CustomButton";
|
||||||
|
ipcIdentifier = "";
|
||||||
leftClickExec = "noctalia-shell ipc call launcher toggle";
|
leftClickExec = "noctalia-shell ipc call launcher toggle";
|
||||||
leftClickUpdateText = false;
|
leftClickUpdateText = false;
|
||||||
maxTextLength = {
|
maxTextLength = {
|
||||||
|
|
@ -40,6 +82,9 @@ in
|
||||||
parseJson = false;
|
parseJson = false;
|
||||||
rightClickExec = "";
|
rightClickExec = "";
|
||||||
rightClickUpdateText = false;
|
rightClickUpdateText = false;
|
||||||
|
showExecTooltip = true;
|
||||||
|
showIcon = true;
|
||||||
|
showTextTooltip = true;
|
||||||
textCollapse = "";
|
textCollapse = "";
|
||||||
textCommand = "";
|
textCommand = "";
|
||||||
textIntervalMs = 3000;
|
textIntervalMs = 3000;
|
||||||
|
|
@ -52,92 +97,185 @@ in
|
||||||
wheelUpUpdateText = false;
|
wheelUpUpdateText = false;
|
||||||
wheelUpdateText = false;
|
wheelUpdateText = false;
|
||||||
}
|
}
|
||||||
|
{ id = "plugin:weekly-calendar"; }
|
||||||
{
|
{
|
||||||
|
clockColor = "none";
|
||||||
customFont = "";
|
customFont = "";
|
||||||
formatHorizontal = "HH:mm ddd, MMM dd";
|
formatHorizontal = "HH:mm ddd, MMM dd";
|
||||||
formatVertical = "HH mm - dd MM";
|
formatVertical = "HH mm - dd MM";
|
||||||
id = "Clock";
|
id = "Clock";
|
||||||
|
tooltipFormat = "HH:mm ddd, MMM dd";
|
||||||
useCustomFont = false;
|
useCustomFont = false;
|
||||||
usePrimaryColor = true;
|
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
characterCount = 4;
|
characterCount = 4;
|
||||||
|
colorizeIcons = false;
|
||||||
|
emptyColor = "secondary";
|
||||||
|
enableScrollWheel = true;
|
||||||
|
focusedColor = "primary";
|
||||||
followFocusedScreen = false;
|
followFocusedScreen = false;
|
||||||
|
fontWeight = "bold";
|
||||||
|
groupedBorderOpacity = 1;
|
||||||
hideUnoccupied = false;
|
hideUnoccupied = false;
|
||||||
|
iconScale = 0.8;
|
||||||
id = "Workspace";
|
id = "Workspace";
|
||||||
labelMode = "index";
|
labelMode = "index";
|
||||||
|
occupiedColor = "secondary";
|
||||||
|
pillSize = 0.6;
|
||||||
|
showApplications = false;
|
||||||
|
showBadge = true;
|
||||||
|
showLabelsOnlyWhenOccupied = true;
|
||||||
|
unfocusedIconsOpacity = 1;
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
|
compactMode = false;
|
||||||
hideMode = "hidden";
|
hideMode = "hidden";
|
||||||
hideWhenIdle = false;
|
hideWhenIdle = false;
|
||||||
id = "MediaMini";
|
id = "MediaMini";
|
||||||
maxWidth = 250;
|
maxWidth = 250;
|
||||||
|
panelShowAlbumArt = true;
|
||||||
scrollingMode = "hover";
|
scrollingMode = "hover";
|
||||||
showAlbumArt = true;
|
showAlbumArt = true;
|
||||||
showArtistFirst = false;
|
showArtistFirst = false;
|
||||||
showProgressRing = true;
|
showProgressRing = true;
|
||||||
showVisualizer = true;
|
showVisualizer = true;
|
||||||
|
textColor = "none";
|
||||||
useFixedWidth = false;
|
useFixedWidth = false;
|
||||||
visualizerType = "linear";
|
visualizerType = "linear";
|
||||||
}
|
}
|
||||||
];
|
];
|
||||||
right = [
|
right = [
|
||||||
{
|
{
|
||||||
blacklist = [
|
blacklist = [ "Bluetooth*" ];
|
||||||
"Bluetooth*"
|
chevronColor = "none";
|
||||||
];
|
|
||||||
colorizeIcons = false;
|
colorizeIcons = false;
|
||||||
drawerEnabled = false;
|
drawerEnabled = false;
|
||||||
|
hidePassive = false;
|
||||||
id = "Tray";
|
id = "Tray";
|
||||||
pinned = [
|
pinned = [ ];
|
||||||
];
|
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
|
compactMode = true;
|
||||||
diskPath = "/";
|
diskPath = "/";
|
||||||
|
iconColor = "none";
|
||||||
id = "SystemMonitor";
|
id = "SystemMonitor";
|
||||||
|
showCpuCores = false;
|
||||||
|
showCpuFreq = false;
|
||||||
showCpuTemp = true;
|
showCpuTemp = true;
|
||||||
showCpuUsage = true;
|
showCpuUsage = true;
|
||||||
|
showDiskAvailable = false;
|
||||||
showDiskUsage = false;
|
showDiskUsage = false;
|
||||||
|
showDiskUsageAsPercent = false;
|
||||||
|
showGpuTemp = false;
|
||||||
|
showLoadAverage = false;
|
||||||
showMemoryAsPercent = false;
|
showMemoryAsPercent = false;
|
||||||
showMemoryUsage = true;
|
showMemoryUsage = true;
|
||||||
showNetworkStats = false;
|
showNetworkStats = false;
|
||||||
usePrimaryColor = false;
|
showSwapUsage = false;
|
||||||
|
textColor = "none";
|
||||||
|
useMonospaceFont = true;
|
||||||
|
usePadding = false;
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
id = "ScreenRecorder";
|
defaultSettings = {
|
||||||
|
connectedColor = "primary";
|
||||||
|
disconnectedColor = "none";
|
||||||
|
displayMode = "onhover";
|
||||||
|
};
|
||||||
|
id = "plugin:network-manager-vpn";
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
|
defaultSettings = {
|
||||||
|
compactMode = false;
|
||||||
|
defaultPeerAction = "copy-ip";
|
||||||
|
hideDisconnected = false;
|
||||||
|
pingCount = 5;
|
||||||
|
refreshInterval = 5000;
|
||||||
|
showIpAddress = true;
|
||||||
|
showPing = false;
|
||||||
|
};
|
||||||
|
id = "plugin:netbird";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
defaultSettings = {
|
||||||
|
audioCodec = "opus";
|
||||||
|
audioSource = "default_output";
|
||||||
|
colorRange = "limited";
|
||||||
|
copyToClipboard = false;
|
||||||
|
directory = "";
|
||||||
|
filenamePattern = "recording_yyyyMMdd_HHmmss";
|
||||||
|
frameRate = "60";
|
||||||
|
hideInactive = false;
|
||||||
|
iconColor = "none";
|
||||||
|
quality = "very_high";
|
||||||
|
resolution = "original";
|
||||||
|
showCursor = true;
|
||||||
|
videoCodec = "h264";
|
||||||
|
videoSource = "portal";
|
||||||
|
};
|
||||||
|
id = "plugin:screen-recorder";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
iconColor = "none";
|
||||||
id = "KeepAwake";
|
id = "KeepAwake";
|
||||||
|
textColor = "none";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
defaultSettings = {
|
||||||
|
completedCount = 0;
|
||||||
|
count = 0;
|
||||||
|
current_page_id = 0;
|
||||||
|
exportEmptySections = false;
|
||||||
|
exportFormat = "markdown";
|
||||||
|
exportPath = "~/Documents";
|
||||||
|
isExpanded = false;
|
||||||
|
pages = [
|
||||||
|
{
|
||||||
|
id = 0;
|
||||||
|
name = "General";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
priorityColors = {
|
||||||
|
high = "#f44336";
|
||||||
|
low = "#9e9e9e";
|
||||||
|
medium = "#2196f3";
|
||||||
|
};
|
||||||
|
showBackground = true;
|
||||||
|
showCompleted = true;
|
||||||
|
todos = [ ];
|
||||||
|
useCustomColors = false;
|
||||||
|
};
|
||||||
|
id = "plugin:todo";
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
displayMode = "onhover";
|
displayMode = "onhover";
|
||||||
|
iconColor = "none";
|
||||||
id = "Volume";
|
id = "Volume";
|
||||||
|
middleClickCommand = "pwvucontrol || pavucontrol";
|
||||||
|
textColor = "none";
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
displayMode = "onhover";
|
displayMode = "onhover";
|
||||||
id = "Brightness";
|
iconColor = "none";
|
||||||
}
|
|
||||||
{
|
|
||||||
displayMode = "onhover";
|
|
||||||
id = "VPN";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
displayMode = "onhover";
|
|
||||||
id = "Bluetooth";
|
id = "Bluetooth";
|
||||||
|
textColor = "none";
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
hideWhenZero = true;
|
hideWhenZero = true;
|
||||||
|
hideWhenZeroUnread = false;
|
||||||
|
iconColor = "none";
|
||||||
id = "NotificationHistory";
|
id = "NotificationHistory";
|
||||||
showUnreadBadge = true;
|
showUnreadBadge = true;
|
||||||
|
unreadBadgeColor = "primary";
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
deviceNativePath = "__default__";
|
deviceNativePath = "__default__";
|
||||||
displayMode = "graphic";
|
displayMode = "graphic-clean";
|
||||||
hideIfIdle = false;
|
hideIfIdle = true;
|
||||||
hideIfNotDetected = true;
|
hideIfNotDetected = true;
|
||||||
id = "Battery";
|
id = "Battery";
|
||||||
showNoctaliaPerformance = true;
|
showNoctaliaPerformance = false;
|
||||||
showPowerProfiles = true;
|
showPowerProfiles = false;
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
colorizeDistroLogo = false;
|
colorizeDistroLogo = false;
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,4 @@
|
||||||
|
{ config }:
|
||||||
{
|
{
|
||||||
cards = [
|
cards = [
|
||||||
{
|
{
|
||||||
|
|
@ -21,35 +22,38 @@
|
||||||
id = "media-sysmon-card";
|
id = "media-sysmon-card";
|
||||||
}
|
}
|
||||||
];
|
];
|
||||||
|
diskPath = "/";
|
||||||
position = "bottom_center";
|
position = "bottom_center";
|
||||||
shortcuts = {
|
shortcuts = {
|
||||||
left = [
|
left = [
|
||||||
|
{ id = "Network"; }
|
||||||
|
{ id = "Bluetooth"; }
|
||||||
|
{ id = "WallpaperSelector"; }
|
||||||
{
|
{
|
||||||
id = "WiFi";
|
defaultSettings = {
|
||||||
}
|
audioCodec = "opus";
|
||||||
{
|
audioSource = "default_output";
|
||||||
id = "Bluetooth";
|
colorRange = "limited";
|
||||||
}
|
copyToClipboard = false;
|
||||||
{
|
directory = "${config.home.homeDirectory}/Videos";
|
||||||
id = "ScreenRecorder";
|
filenamePattern = "recording_yyyyMMdd_HHmmss";
|
||||||
}
|
frameRate = "60";
|
||||||
{
|
hideInactive = false;
|
||||||
id = "WallpaperSelector";
|
iconColor = "none";
|
||||||
|
quality = "very_high";
|
||||||
|
resolution = "original";
|
||||||
|
showCursor = true;
|
||||||
|
videoCodec = "h264";
|
||||||
|
videoSource = "portal";
|
||||||
|
};
|
||||||
|
id = "plugin:screen-recorder";
|
||||||
}
|
}
|
||||||
];
|
];
|
||||||
right = [
|
right = [
|
||||||
{
|
{ id = "Notifications"; }
|
||||||
id = "Notifications";
|
{ id = "PowerProfile"; }
|
||||||
}
|
{ id = "KeepAwake"; }
|
||||||
{
|
{ id = "NightLight"; }
|
||||||
id = "PowerProfile";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
id = "KeepAwake";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
id = "NightLight";
|
|
||||||
}
|
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,14 +1,21 @@
|
||||||
{ lib, config, ... }:
|
{
|
||||||
|
lib,
|
||||||
|
config,
|
||||||
|
inputs,
|
||||||
|
...
|
||||||
|
}:
|
||||||
let
|
let
|
||||||
|
|
||||||
inherit (config.systemConf) username;
|
inherit (config.systemConf) username;
|
||||||
inherit (builtins) mapAttrs;
|
inherit (builtins) mapAttrs hasAttr;
|
||||||
inherit (lib)
|
inherit (lib)
|
||||||
|
listToAttrs
|
||||||
mkForce
|
mkForce
|
||||||
removePrefix
|
removePrefix
|
||||||
concatStringsSep
|
concatStringsSep
|
||||||
mapAttrsToList
|
mapAttrsToList
|
||||||
mkIf
|
mkIf
|
||||||
|
mkDefault
|
||||||
;
|
;
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
|
|
@ -18,10 +25,26 @@ in
|
||||||
networking.networkmanager.enable = true;
|
networking.networkmanager.enable = true;
|
||||||
services.upower.enable = true;
|
services.upower.enable = true;
|
||||||
hardware.bluetooth.enable = true;
|
hardware.bluetooth.enable = true;
|
||||||
|
systemd.user.services.polkit-gnome-authentication-agent-1.enable = mkForce false;
|
||||||
|
|
||||||
# ================================= #
|
# ================================= #
|
||||||
|
|
||||||
|
# Calendar Service
|
||||||
|
# Run `nix shell nixpkgs#gnome-control-center -c bash -c "XDG_CURRENT_DESKTOP=GNOME gnome-control-center"`,
|
||||||
|
# Then login to service. Check: https://nixos.wiki/wiki/GNOME/Calendar
|
||||||
|
programs.dconf.enable = true;
|
||||||
|
services.gnome.evolution-data-server.enable = true;
|
||||||
|
services.gnome.gnome-online-accounts.enable = true;
|
||||||
|
services.gnome.gnome-keyring.enable = true;
|
||||||
|
programs.evolution.enable = true;
|
||||||
|
|
||||||
home-manager.users.${username} =
|
home-manager.users.${username} =
|
||||||
{ osConfig, config, ... }:
|
{
|
||||||
|
osConfig,
|
||||||
|
config,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}:
|
||||||
let
|
let
|
||||||
wmCfg = config.wm;
|
wmCfg = config.wm;
|
||||||
bindCfg = wmCfg.keybinds;
|
bindCfg = wmCfg.keybinds;
|
||||||
|
|
@ -56,38 +79,132 @@ in
|
||||||
"XF86MonBrightnessUp" = ''noctalia "brightness" "increase"'';
|
"XF86MonBrightnessUp" = ''noctalia "brightness" "increase"'';
|
||||||
};
|
};
|
||||||
|
|
||||||
programs.noctalia-shell = {
|
# Install Required Packages
|
||||||
|
home.packages = mkIf (hasAttr "wt0" osConfig.services.netbird.clients) [
|
||||||
|
# Alias netbird-wt0 to netbird
|
||||||
|
(pkgs.writeShellScriptBin "netbird" ''
|
||||||
|
netbird-wt0 $@
|
||||||
|
'')
|
||||||
|
# Output noctalia settings in nix format
|
||||||
|
(pkgs.writeShellScriptBin "noctalia-settings" ''
|
||||||
|
PATH="$PATH:${pkgs.jq}/bin:${pkgs.nixfmt}/bin"
|
||||||
|
tmp=$(mktemp)
|
||||||
|
|
||||||
|
noctalia-shell ipc call state all | jq -S .settings > "$tmp"
|
||||||
|
|
||||||
|
nix eval --impure --expr \
|
||||||
|
"(builtins.fromJSON (builtins.readFile \"$tmp\"))$1" \
|
||||||
|
| nixfmt
|
||||||
|
|
||||||
|
rm "$tmp"
|
||||||
|
'')
|
||||||
|
pkgs.gpu-screen-recorder
|
||||||
|
];
|
||||||
|
|
||||||
|
programs.noctalia-shell =
|
||||||
|
let
|
||||||
|
officialPlugins = [
|
||||||
|
"niri-overview-launcher"
|
||||||
|
"timer"
|
||||||
|
"screen-recorder"
|
||||||
|
"clipper"
|
||||||
|
"battery-threshold"
|
||||||
|
"polkit-agent"
|
||||||
|
"todo"
|
||||||
|
"keybind-cheatsheet"
|
||||||
|
"battery-action"
|
||||||
|
"weekly-calendar"
|
||||||
|
"privacy-indicator"
|
||||||
|
"netbird"
|
||||||
|
"network-manager-vpn"
|
||||||
|
];
|
||||||
|
states = listToAttrs (
|
||||||
|
map (x: {
|
||||||
|
name = x;
|
||||||
|
value = {
|
||||||
|
enabled = true;
|
||||||
|
sourceUrl = "https://github.com/noctalia-dev/noctalia-plugins";
|
||||||
|
};
|
||||||
|
}) officialPlugins
|
||||||
|
);
|
||||||
|
in
|
||||||
|
{
|
||||||
enable = true;
|
enable = true;
|
||||||
|
package = inputs.noctalia.packages.${pkgs.stdenv.hostPlatform.system}.default.override {
|
||||||
|
calendarSupport = true;
|
||||||
|
};
|
||||||
systemd.enable = true;
|
systemd.enable = true;
|
||||||
colors = mkForce { };
|
colors = mkForce { };
|
||||||
|
plugins = {
|
||||||
|
sources = [
|
||||||
|
{
|
||||||
|
enabled = true;
|
||||||
|
name = "Official Noctalia Plugins";
|
||||||
|
url = "https://github.com/noctalia-dev/noctalia-plugins";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
inherit states;
|
||||||
|
};
|
||||||
|
pluginSettings = {
|
||||||
|
netbird = {
|
||||||
|
compactMode = true;
|
||||||
|
defaultPeerAction = "copy-ip";
|
||||||
|
hideDisconnected = false;
|
||||||
|
pingCount = 5;
|
||||||
|
refreshInterval = 5000;
|
||||||
|
showIpAddress = false;
|
||||||
|
showPing = false;
|
||||||
|
};
|
||||||
|
privacy-indicator = {
|
||||||
|
activeColor = "primary";
|
||||||
|
enableToast = false;
|
||||||
|
hideInactive = true;
|
||||||
|
iconSpacing = 4;
|
||||||
|
inactiveColor = "none";
|
||||||
|
micFilterRegex = "";
|
||||||
|
removeMargins = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
settings = {
|
settings = {
|
||||||
settingsVersion = 26;
|
|
||||||
appLauncher = {
|
appLauncher = {
|
||||||
|
autoPasteClipboard = false;
|
||||||
|
clipboardWatchImageCommand = "wl-paste --type image --watch cliphist store";
|
||||||
|
clipboardWatchTextCommand = "wl-paste --type text --watch cliphist store";
|
||||||
|
clipboardWrapText = true;
|
||||||
customLaunchPrefix = "";
|
customLaunchPrefix = "";
|
||||||
customLaunchPrefixEnabled = false;
|
customLaunchPrefixEnabled = false;
|
||||||
|
density = "default";
|
||||||
enableClipPreview = true;
|
enableClipPreview = true;
|
||||||
enableClipboardHistory = true;
|
enableClipboardHistory = true;
|
||||||
pinnedExecs = [
|
enableSessionSearch = true;
|
||||||
];
|
enableSettingsSearch = true;
|
||||||
|
enableWindowsSearch = true;
|
||||||
|
iconMode = "tabler";
|
||||||
|
ignoreMouseInput = false;
|
||||||
|
overviewLayer = false;
|
||||||
|
pinnedApps = [ ];
|
||||||
position = "top_center";
|
position = "top_center";
|
||||||
|
screenshotAnnotationTool = "";
|
||||||
|
showCategories = true;
|
||||||
|
showIconBackground = false;
|
||||||
sortByMostUsed = true;
|
sortByMostUsed = true;
|
||||||
terminalCommand = "${wmCfg.app.terminal.run}";
|
terminalCommand = "${wmCfg.app.terminal.run}";
|
||||||
useApp2Unit = false;
|
useApp2Unit = false;
|
||||||
viewMode = "list";
|
viewMode = "list";
|
||||||
};
|
};
|
||||||
audio = {
|
audio = {
|
||||||
cavaFrameRate = 30;
|
mprisBlacklist = [ ];
|
||||||
externalMixer = "pwvucontrol";
|
|
||||||
mprisBlacklist = [
|
|
||||||
];
|
|
||||||
preferredPlayer = "mpv";
|
preferredPlayer = "mpv";
|
||||||
visualizerQuality = "high";
|
spectrumFrameRate = 30;
|
||||||
visualizerType = "linear";
|
visualizerType = "linear";
|
||||||
|
volumeFeedback = false;
|
||||||
|
volumeFeedbackSoundFile = "";
|
||||||
volumeOverdrive = false;
|
volumeOverdrive = false;
|
||||||
volumeStep = 5;
|
volumeStep = 5;
|
||||||
};
|
};
|
||||||
bar = import ./bar.nix { inherit lib; };
|
bar = import ./bar.nix { inherit lib; };
|
||||||
brightness = {
|
brightness = {
|
||||||
|
backlightDeviceMappings = [ ];
|
||||||
brightnessStep = 5;
|
brightnessStep = 5;
|
||||||
enableDdcSupport = false;
|
enableDdcSupport = false;
|
||||||
enforceMinimum = true;
|
enforceMinimum = true;
|
||||||
|
|
@ -112,66 +229,114 @@ in
|
||||||
}
|
}
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
changelog = {
|
|
||||||
lastSeenVersion = "";
|
|
||||||
};
|
|
||||||
colorSchemes = {
|
colorSchemes = {
|
||||||
darkMode = true;
|
darkMode = true;
|
||||||
generateTemplatesForPredefined = true;
|
generationMethod = "tonal-spot";
|
||||||
manualSunrise = "06:30";
|
manualSunrise = "06:30";
|
||||||
manualSunset = "18:30";
|
manualSunset = "18:30";
|
||||||
matugenSchemeType = "scheme-neutral";
|
monitorForColors = "";
|
||||||
predefinedScheme = "Noctalia (default)";
|
predefinedScheme = "Noctalia (default)";
|
||||||
schedulingMode = "off";
|
schedulingMode = "off";
|
||||||
useWallpaperColors = true;
|
useWallpaperColors = true;
|
||||||
};
|
};
|
||||||
controlCenter = import ./controlCenter.nix;
|
controlCenter = import ./controlCenter.nix { inherit config; };
|
||||||
dock = {
|
dock = {
|
||||||
|
animationSpeed = 1;
|
||||||
backgroundOpacity = mkForce 1.0;
|
backgroundOpacity = mkForce 1.0;
|
||||||
colorizeIcons = false;
|
colorizeIcons = false;
|
||||||
|
deadOpacity = 0.6;
|
||||||
displayMode = "auto_hide";
|
displayMode = "auto_hide";
|
||||||
|
dockType = "floating";
|
||||||
enabled = false;
|
enabled = false;
|
||||||
floatingRatio = 1;
|
floatingRatio = 1;
|
||||||
monitors = [
|
groupApps = false;
|
||||||
];
|
groupClickAction = "cycle";
|
||||||
|
groupContextMenuMode = "extended";
|
||||||
|
groupIndicatorStyle = "dots";
|
||||||
|
inactiveIndicators = false;
|
||||||
|
indicatorColor = "primary";
|
||||||
|
indicatorOpacity = 0.6;
|
||||||
|
indicatorThickness = 3;
|
||||||
|
launcherIconColor = "none";
|
||||||
|
launcherPosition = "end";
|
||||||
|
monitors = [ ];
|
||||||
onlySameOutput = true;
|
onlySameOutput = true;
|
||||||
pinnedApps = [
|
pinnedApps = [ ];
|
||||||
];
|
pinnedStatic = false;
|
||||||
|
position = "bottom";
|
||||||
|
showDockIndicator = false;
|
||||||
|
showLauncherIcon = false;
|
||||||
|
sitOnFrame = false;
|
||||||
size = 1;
|
size = 1;
|
||||||
};
|
};
|
||||||
general = {
|
general = {
|
||||||
allowPanelsOnScreenWithoutBar = true;
|
allowPanelsOnScreenWithoutBar = true;
|
||||||
|
allowPasswordWithFprintd = false;
|
||||||
animationDisabled = false;
|
animationDisabled = false;
|
||||||
animationSpeed = 1.5;
|
animationSpeed = 1.5;
|
||||||
|
autoStartAuth = false;
|
||||||
avatarImage = "${config.home.homeDirectory}/.face";
|
avatarImage = "${config.home.homeDirectory}/.face";
|
||||||
boxRadiusRatio = 0.68;
|
boxRadiusRatio = 0.68;
|
||||||
iRadiusRatio = 0.68;
|
clockFormat = "hh\\nmm";
|
||||||
|
clockStyle = "custom";
|
||||||
compactLockScreen = false;
|
compactLockScreen = false;
|
||||||
dimmerOpacity = 0.4;
|
dimmerOpacity = 0.4;
|
||||||
|
enableBlurBehind = true;
|
||||||
|
enableLockScreenCountdown = true;
|
||||||
|
enableLockScreenMediaControls = false;
|
||||||
enableShadows = true;
|
enableShadows = true;
|
||||||
forceBlackScreenCorners = true;
|
forceBlackScreenCorners = true;
|
||||||
|
iRadiusRatio = 0.68;
|
||||||
|
keybinds = {
|
||||||
|
keyDown = [ "Down" ];
|
||||||
|
keyEnter = [
|
||||||
|
"Return"
|
||||||
|
"Enter"
|
||||||
|
];
|
||||||
|
keyEscape = [ "Esc" ];
|
||||||
|
keyLeft = [ "Left" ];
|
||||||
|
keyRemove = [ "Del" ];
|
||||||
|
keyRight = [ "Right" ];
|
||||||
|
keyUp = [ "Up" ];
|
||||||
|
};
|
||||||
language = "";
|
language = "";
|
||||||
lockOnSuspend = true;
|
lockOnSuspend = true;
|
||||||
|
lockScreenAnimations = false;
|
||||||
|
lockScreenBlur = 0;
|
||||||
|
lockScreenCountdownDuration = 3000;
|
||||||
|
lockScreenMonitors = [ ];
|
||||||
|
lockScreenTint = 0;
|
||||||
|
passwordChars = false;
|
||||||
radiusRatio = 1;
|
radiusRatio = 1;
|
||||||
|
reverseScroll = false;
|
||||||
scaleRatio = 1;
|
scaleRatio = 1;
|
||||||
screenRadiusRatio = 1.09;
|
screenRadiusRatio = 1.09;
|
||||||
shadowDirection = "bottom_right";
|
shadowDirection = "bottom_right";
|
||||||
shadowOffsetX = 2;
|
shadowOffsetX = 2;
|
||||||
shadowOffsetY = 3;
|
shadowOffsetY = 3;
|
||||||
|
showChangelogOnStartup = true;
|
||||||
showHibernateOnLockScreen = false;
|
showHibernateOnLockScreen = false;
|
||||||
showScreenCorners = true;
|
showScreenCorners = true;
|
||||||
lockScreenAnimation = true;
|
showSessionButtonsOnLockScreen = true;
|
||||||
lockScreenCountdownDuration = 3000;
|
telemetryEnabled = false;
|
||||||
};
|
};
|
||||||
hooks = {
|
hooks = {
|
||||||
enabled = false;
|
|
||||||
darkModeChange = "";
|
darkModeChange = "";
|
||||||
|
enabled = false;
|
||||||
|
performanceModeDisabled = "";
|
||||||
|
performanceModeEnabled = "";
|
||||||
|
screenLock = "";
|
||||||
|
screenUnlock = "";
|
||||||
|
session = "";
|
||||||
|
startup = "";
|
||||||
wallpaperChange = "";
|
wallpaperChange = "";
|
||||||
};
|
};
|
||||||
location = {
|
location = {
|
||||||
analogClockInCalendar = false;
|
analogClockInCalendar = false;
|
||||||
firstDayOfWeek = -1;
|
firstDayOfWeek = -1;
|
||||||
name = "Taipei, TW";
|
hideWeatherCityName = false;
|
||||||
|
hideWeatherTimezone = false;
|
||||||
|
name = mkDefault "Taipei, TW";
|
||||||
showCalendarEvents = true;
|
showCalendarEvents = true;
|
||||||
showCalendarWeather = true;
|
showCalendarWeather = true;
|
||||||
showWeekNumberInCalendar = false;
|
showWeekNumberInCalendar = false;
|
||||||
|
|
@ -181,30 +346,56 @@ in
|
||||||
weatherShowEffects = true;
|
weatherShowEffects = true;
|
||||||
};
|
};
|
||||||
network = {
|
network = {
|
||||||
|
airplaneModeEnabled = false;
|
||||||
|
bluetoothAutoConnect = true;
|
||||||
|
bluetoothDetailsViewMode = "grid";
|
||||||
|
bluetoothHideUnnamedDevices = false;
|
||||||
|
bluetoothRssiPollIntervalMs = 60000;
|
||||||
|
bluetoothRssiPollingEnabled = false;
|
||||||
|
disableDiscoverability = false;
|
||||||
|
networkPanelView = "wifi";
|
||||||
|
wifiDetailsViewMode = "grid";
|
||||||
wifiEnabled = true;
|
wifiEnabled = true;
|
||||||
};
|
};
|
||||||
nightLight = {
|
nightLight = {
|
||||||
enabled = true;
|
|
||||||
autoSchedule = true;
|
autoSchedule = true;
|
||||||
dayTemp = "6000";
|
dayTemp = "6000";
|
||||||
nightTemp = "5500";
|
enabled = true;
|
||||||
forced = false;
|
forced = false;
|
||||||
manualSunrise = "06:30";
|
manualSunrise = "06:30";
|
||||||
manualSunset = "18:30";
|
manualSunset = "18:30";
|
||||||
|
nightTemp = "5500";
|
||||||
};
|
};
|
||||||
notifications = {
|
notifications = {
|
||||||
enableMarkdown = true;
|
|
||||||
backgroundOpacity = mkForce 1.00;
|
backgroundOpacity = mkForce 1.00;
|
||||||
|
clearDismissed = true;
|
||||||
criticalUrgencyDuration = 15;
|
criticalUrgencyDuration = 15;
|
||||||
|
density = "default";
|
||||||
|
enableBatteryToast = true;
|
||||||
enableKeyboardLayoutToast = true;
|
enableKeyboardLayoutToast = true;
|
||||||
|
enableMarkdown = true;
|
||||||
|
enableMediaToast = false;
|
||||||
enabled = true;
|
enabled = true;
|
||||||
location = "bottom_right";
|
location = "bottom_right";
|
||||||
lowUrgencyDuration = 3;
|
lowUrgencyDuration = 3;
|
||||||
monitors = [
|
monitors = [ ];
|
||||||
];
|
|
||||||
normalUrgencyDuration = 8;
|
normalUrgencyDuration = 8;
|
||||||
overlayLayer = true;
|
overlayLayer = true;
|
||||||
respectExpireTimeout = false;
|
respectExpireTimeout = false;
|
||||||
|
saveToHistory = {
|
||||||
|
critical = true;
|
||||||
|
low = true;
|
||||||
|
normal = true;
|
||||||
|
};
|
||||||
|
sounds = {
|
||||||
|
criticalSoundFile = "";
|
||||||
|
enabled = false;
|
||||||
|
excludedApps = "discord,firefox,chrome,chromium,edge";
|
||||||
|
lowSoundFile = "";
|
||||||
|
normalSoundFile = "";
|
||||||
|
separateSounds = false;
|
||||||
|
volume = 0.5;
|
||||||
|
};
|
||||||
};
|
};
|
||||||
osd = {
|
osd = {
|
||||||
autoHideMs = 1500;
|
autoHideMs = 1500;
|
||||||
|
|
@ -216,61 +407,113 @@ in
|
||||||
2
|
2
|
||||||
];
|
];
|
||||||
location = "right";
|
location = "right";
|
||||||
monitors = [
|
monitors = [ ];
|
||||||
];
|
|
||||||
overlayLayer = true;
|
overlayLayer = true;
|
||||||
};
|
};
|
||||||
screenRecorder = {
|
settingsVersion = 57;
|
||||||
audioCodec = "opus";
|
|
||||||
audioSource = "default_output";
|
|
||||||
colorRange = "limited";
|
|
||||||
directory = "${config.home.homeDirectory}/Videos";
|
|
||||||
frameRate = 60;
|
|
||||||
quality = "very_high";
|
|
||||||
showCursor = true;
|
|
||||||
videoCodec = "h264";
|
|
||||||
videoSource = "portal";
|
|
||||||
};
|
|
||||||
sessionMenu = import ./sessionMenu.nix;
|
sessionMenu = import ./sessionMenu.nix;
|
||||||
systemMonitor = import ./systemMonitor.nix;
|
systemMonitor = {
|
||||||
templates = import ./templates.nix;
|
batteryCriticalThreshold = 5;
|
||||||
|
batteryWarningThreshold = 20;
|
||||||
|
cpuCriticalThreshold = 90;
|
||||||
|
cpuWarningThreshold = 80;
|
||||||
|
criticalColor = "";
|
||||||
|
diskAvailCriticalThreshold = 10;
|
||||||
|
diskAvailWarningThreshold = 20;
|
||||||
|
diskCriticalThreshold = 90;
|
||||||
|
diskWarningThreshold = 80;
|
||||||
|
enableDgpuMonitoring = false;
|
||||||
|
externalMonitor = "resources || missioncenter || jdsystemmonitor || corestats || system-monitoring-center || gnome-system-monitor || plasma-systemmonitor || mate-system-monitor || ukui-system-monitor || deepin-system-monitor || pantheon-system-monitor";
|
||||||
|
gpuCriticalThreshold = 90;
|
||||||
|
gpuWarningThreshold = 80;
|
||||||
|
memCriticalThreshold = 90;
|
||||||
|
memWarningThreshold = 80;
|
||||||
|
swapCriticalThreshold = 90;
|
||||||
|
swapWarningThreshold = 80;
|
||||||
|
tempCriticalThreshold = 90;
|
||||||
|
tempWarningThreshold = 80;
|
||||||
|
useCustomColors = false;
|
||||||
|
warningColor = "";
|
||||||
|
};
|
||||||
|
templates = {
|
||||||
|
activeTemplates = [ ];
|
||||||
|
enableUserTheming = false;
|
||||||
|
};
|
||||||
ui = {
|
ui = {
|
||||||
|
boxBorderEnabled = false;
|
||||||
fontDefault = config.stylix.fonts.sansSerif.name;
|
fontDefault = config.stylix.fonts.sansSerif.name;
|
||||||
fontDefaultScale = 1;
|
fontDefaultScale = 1;
|
||||||
fontFixed = config.stylix.fonts.monospace.name;
|
fontFixed = config.stylix.fonts.monospace.name;
|
||||||
fontFixedScale = 1;
|
fontFixedScale = 1;
|
||||||
panelBackgroundOpacity = mkForce 0.25;
|
panelBackgroundOpacity = mkForce 0.25;
|
||||||
panelsAttachedToBar = true;
|
panelsAttachedToBar = true;
|
||||||
settingsPanelAttachToBar = true;
|
settingsPanelMode = "attached";
|
||||||
|
settingsPanelSideBarCardStyle = false;
|
||||||
tooltipsEnabled = true;
|
tooltipsEnabled = true;
|
||||||
};
|
};
|
||||||
wallpaper = {
|
wallpaper = {
|
||||||
|
automationEnabled = false;
|
||||||
directory = "${config.home.homeDirectory}/Pictures/Wallpapers";
|
directory = "${config.home.homeDirectory}/Pictures/Wallpapers";
|
||||||
enableMultiMonitorDirectories = false;
|
enableMultiMonitorDirectories = false;
|
||||||
enabled = true;
|
enabled = true;
|
||||||
|
favorites = [ ];
|
||||||
fillColor = "#000000";
|
fillColor = "#000000";
|
||||||
fillMode = "crop";
|
fillMode = "crop";
|
||||||
hideWallpaperFilenames = true;
|
hideWallpaperFilenames = true;
|
||||||
monitorDirectories = [
|
monitorDirectories = [ ];
|
||||||
];
|
overviewBlur = 0.4;
|
||||||
overviewEnabled = true;
|
overviewEnabled = true;
|
||||||
|
overviewTint = 0.6;
|
||||||
panelPosition = "follow_bar";
|
panelPosition = "follow_bar";
|
||||||
randomEnabled = false;
|
|
||||||
randomIntervalSec = 300;
|
randomIntervalSec = 300;
|
||||||
recursiveSearch = false;
|
|
||||||
setWallpaperOnAllMonitors = true;
|
setWallpaperOnAllMonitors = true;
|
||||||
|
showHiddenFiles = false;
|
||||||
|
skipStartupTransition = false;
|
||||||
|
sortOrder = "name";
|
||||||
transitionDuration = 1500;
|
transitionDuration = 1500;
|
||||||
transitionEdgeSmoothness = 0.05;
|
transitionEdgeSmoothness = 0.05;
|
||||||
transitionType = "random";
|
transitionType = "random";
|
||||||
|
useSolidColor = false;
|
||||||
useWallhaven = false;
|
useWallhaven = false;
|
||||||
|
viewMode = "single";
|
||||||
|
wallhavenApiKey = "";
|
||||||
wallhavenCategories = "111";
|
wallhavenCategories = "111";
|
||||||
wallhavenOrder = "desc";
|
wallhavenOrder = "desc";
|
||||||
wallhavenPurity = "100";
|
wallhavenPurity = "100";
|
||||||
wallhavenQuery = "";
|
wallhavenQuery = "";
|
||||||
|
wallhavenRatios = "";
|
||||||
wallhavenResolutionHeight = "";
|
wallhavenResolutionHeight = "";
|
||||||
wallhavenResolutionMode = "atleast";
|
wallhavenResolutionMode = "atleast";
|
||||||
wallhavenResolutionWidth = "";
|
wallhavenResolutionWidth = "";
|
||||||
wallhavenSorting = "relevance";
|
wallhavenSorting = "relevance";
|
||||||
|
wallpaperChangeMode = "random";
|
||||||
|
};
|
||||||
|
plugins = {
|
||||||
|
autoUpdate = false;
|
||||||
|
};
|
||||||
|
noctaliaPerformance = {
|
||||||
|
disableDesktopWidgets = true;
|
||||||
|
disableWallpaper = true;
|
||||||
|
};
|
||||||
|
desktopWidgets = {
|
||||||
|
enabled = true;
|
||||||
|
gridSnap = false;
|
||||||
|
monitorWidgets = [ ];
|
||||||
|
overviewEnabled = true;
|
||||||
|
};
|
||||||
|
idle = {
|
||||||
|
customCommands = "[]";
|
||||||
|
enabled = false;
|
||||||
|
fadeDuration = 5;
|
||||||
|
lockCommand = "";
|
||||||
|
lockTimeout = 660;
|
||||||
|
resumeLockCommand = "";
|
||||||
|
resumeScreenOffCommand = "";
|
||||||
|
resumeSuspendCommand = "";
|
||||||
|
screenOffCommand = "";
|
||||||
|
screenOffTimeout = 600;
|
||||||
|
suspendCommand = "";
|
||||||
|
suspendTimeout = 1800;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -1,38 +1,47 @@
|
||||||
{
|
{
|
||||||
countdownDuration = 3000;
|
countdownDuration = 3000;
|
||||||
enableCountdown = true;
|
enableCountdown = true;
|
||||||
|
powerOptiolargeButtonsLayout = "single-row";
|
||||||
|
largeButtonsStyle = true;
|
||||||
position = "bottom_center";
|
position = "bottom_center";
|
||||||
powerOptions = [
|
powerOptions = [
|
||||||
{
|
{
|
||||||
action = "lock";
|
action = "lock";
|
||||||
countdownEnabled = true;
|
countdownEnabled = true;
|
||||||
enabled = true;
|
enabled = true;
|
||||||
|
keybind = "1";
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
action = "suspend";
|
action = "suspend";
|
||||||
countdownEnabled = true;
|
countdownEnabled = true;
|
||||||
enabled = true;
|
enabled = true;
|
||||||
|
keybind = "2";
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
action = "hibernate";
|
action = "hibernate";
|
||||||
countdownEnabled = true;
|
countdownEnabled = true;
|
||||||
enabled = true;
|
enabled = true;
|
||||||
|
keybind = "3";
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
action = "reboot";
|
action = "reboot";
|
||||||
countdownEnabled = true;
|
countdownEnabled = true;
|
||||||
enabled = true;
|
enabled = true;
|
||||||
|
keybind = "4";
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
action = "logout";
|
action = "logout";
|
||||||
countdownEnabled = true;
|
countdownEnabled = true;
|
||||||
enabled = true;
|
enabled = true;
|
||||||
|
keybind = "5";
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
action = "shutdown";
|
action = "shutdown";
|
||||||
countdownEnabled = true;
|
countdownEnabled = true;
|
||||||
enabled = true;
|
enabled = true;
|
||||||
|
keybind = "6";
|
||||||
}
|
}
|
||||||
];
|
];
|
||||||
showHeader = false;
|
showHeader = false;
|
||||||
|
showKeybinds = true;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,18 +0,0 @@
|
||||||
{
|
|
||||||
cpuCriticalThreshold = 90;
|
|
||||||
cpuPollingInterval = 3000;
|
|
||||||
cpuWarningThreshold = 80;
|
|
||||||
criticalColor = "";
|
|
||||||
diskCriticalThreshold = 90;
|
|
||||||
diskPollingInterval = 3000;
|
|
||||||
diskWarningThreshold = 80;
|
|
||||||
memCriticalThreshold = 90;
|
|
||||||
memPollingInterval = 3000;
|
|
||||||
memWarningThreshold = 80;
|
|
||||||
networkPollingInterval = 3000;
|
|
||||||
tempCriticalThreshold = 90;
|
|
||||||
tempPollingInterval = 3000;
|
|
||||||
tempWarningThreshold = 80;
|
|
||||||
useCustomColors = false;
|
|
||||||
warningColor = "";
|
|
||||||
}
|
|
||||||
|
|
@ -1,22 +0,0 @@
|
||||||
{
|
|
||||||
alacritty = false;
|
|
||||||
cava = false;
|
|
||||||
code = false;
|
|
||||||
discord = false;
|
|
||||||
emacs = false;
|
|
||||||
enableUserTemplates = false;
|
|
||||||
foot = false;
|
|
||||||
fuzzel = false;
|
|
||||||
ghostty = false;
|
|
||||||
gtk = false;
|
|
||||||
kcolorscheme = false;
|
|
||||||
kitty = false;
|
|
||||||
niri = false;
|
|
||||||
pywalfox = false;
|
|
||||||
qt = false;
|
|
||||||
spicetify = false;
|
|
||||||
telegram = false;
|
|
||||||
vicinae = false;
|
|
||||||
walker = false;
|
|
||||||
wezterm = false;
|
|
||||||
}
|
|
||||||
|
|
@ -1,22 +1,27 @@
|
||||||
{
|
{
|
||||||
adminPassFile,
|
hostname,
|
||||||
ldapConf,
|
domain,
|
||||||
domain ? null,
|
|
||||||
acmeConfs ? null,
|
|
||||||
certs ? null,
|
|
||||||
enableNginx ? true,
|
|
||||||
}:
|
}:
|
||||||
{
|
{
|
||||||
config,
|
config,
|
||||||
lib,
|
|
||||||
...
|
...
|
||||||
}:
|
}:
|
||||||
let
|
let
|
||||||
inherit (lib) mkIf;
|
inherit (config.sops) secrets;
|
||||||
|
cfg = config.services.stalwart;
|
||||||
|
secretPrefix = "/run/credentials/stalwart.service";
|
||||||
|
adminPasswordVarName = "user_admin_password";
|
||||||
|
adminPasswordFile = "${secretPrefix}/${adminPasswordVarName}";
|
||||||
|
|
||||||
logFilePath = "${config.services.stalwart.dataDir}/logs";
|
fqdn = "${hostname}.${domain}";
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
|
sops.secrets."stalwart/password" = {
|
||||||
|
owner = cfg.user;
|
||||||
|
group = cfg.group;
|
||||||
|
mode = "0440";
|
||||||
|
};
|
||||||
|
|
||||||
services.postgresql = {
|
services.postgresql = {
|
||||||
enable = true;
|
enable = true;
|
||||||
ensureDatabases = [
|
ensureDatabases = [
|
||||||
|
|
@ -30,20 +35,14 @@ in
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
|
|
||||||
systemd.tmpfiles.rules =
|
|
||||||
let
|
|
||||||
inherit (config.users.users.stalwart) name group;
|
|
||||||
in
|
|
||||||
[
|
|
||||||
"d ${logFilePath} 0750 ${name} ${group} - "
|
|
||||||
];
|
|
||||||
|
|
||||||
services.stalwart = {
|
services.stalwart = {
|
||||||
enable = true;
|
enable = true;
|
||||||
openFirewall = true;
|
credentials = {
|
||||||
|
user_admin_password = secrets."stalwart/password".path;
|
||||||
|
};
|
||||||
settings = {
|
settings = {
|
||||||
server = {
|
server = {
|
||||||
hostname = if (domain != null) then "mx1.${domain}" else config.networking.fqdn;
|
hostname = fqdn;
|
||||||
proxy = {
|
proxy = {
|
||||||
trusted-networks = [ "10.0.0.148" ];
|
trusted-networks = [ "10.0.0.148" ];
|
||||||
};
|
};
|
||||||
|
|
@ -91,11 +90,9 @@ in
|
||||||
};
|
};
|
||||||
|
|
||||||
lookup.default = {
|
lookup.default = {
|
||||||
hostname = "mx1.${domain}";
|
inherit domain;
|
||||||
domain = "${domain}";
|
hostname = fqdn;
|
||||||
};
|
};
|
||||||
acme = mkIf (acmeConfs != null) acmeConfs;
|
|
||||||
certificate = mkIf (certs != null) certs;
|
|
||||||
|
|
||||||
directory = {
|
directory = {
|
||||||
"in-memory" = {
|
"in-memory" = {
|
||||||
|
|
@ -104,20 +101,19 @@ in
|
||||||
{
|
{
|
||||||
name = "postmaster";
|
name = "postmaster";
|
||||||
class = "individual";
|
class = "individual";
|
||||||
secret = "%{file:${adminPassFile}}%";
|
secret = "%{file:${adminPasswordFile}}%";
|
||||||
email = [ "postmaster@${domain}" ];
|
email = [ "postmaster@${domain}" ];
|
||||||
}
|
}
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
"ldap" = ldapConf;
|
|
||||||
imap.lookup.domains = [
|
imap.lookup.domains = [
|
||||||
"mx1.${domain}"
|
fqdn
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
|
|
||||||
authentication.fallback-admin = {
|
authentication.fallback-admin = {
|
||||||
user = "admin";
|
user = "admin";
|
||||||
secret = "%{file:${adminPassFile}}%";
|
secret = "%{file:${adminPasswordFile}}%";
|
||||||
};
|
};
|
||||||
tracer."stdout" = {
|
tracer."stdout" = {
|
||||||
enable = true;
|
enable = true;
|
||||||
|
|
@ -126,16 +122,4 @@ in
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
services.nginx = mkIf enableNginx {
|
|
||||||
enable = true;
|
|
||||||
virtualHosts = {
|
|
||||||
"mail.${domain}" = {
|
|
||||||
locations."/".proxyPass = "http://127.0.0.1:8080";
|
|
||||||
locations."/jmap".proxyPass = "http://127.0.0.1:31004";
|
|
||||||
enableACME = true;
|
|
||||||
forceSSL = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue