From 92936676e8b70e13e9fc688cb6f2b2ea35934787 Mon Sep 17 00:00:00 2001 From: L-Nafaryus Date: Thu, 20 Jun 2024 00:16:28 +0500 Subject: [PATCH] nixosModules: new structure, new initialization process with path extraction and configuration new: packages: bonfire-docs flake: update inputs astora: move from gnome to hyprland (incomplete) --- .gitmodules | 4 +- config/git/config | 2 +- flake.lock | 415 ++++++++- flake.nix | 25 +- lib/default.nix | 21 +- lib/maintainers.nix | 4 +- nixosConfigurations/astora/default.nix | 52 +- nixosConfigurations/astora/users.nix | 205 ++++- nixosConfigurations/catarina/default.nix | 7 +- nixosConfigurations/catarina/hardware.nix | 17 +- nixosModules/bonfire/secrets | 1 - nixosModules/default.nix | 20 + nixosModules/{ => misc}/bonfire/default.nix | 6 +- nixosModules/misc/bonfire/secrets/.sops.yaml | 9 + .../misc/bonfire/secrets/catarina.yaml | 46 + nixosModules/misc/bonfire/secrets/default.nix | 41 + .../default.nix => services/papermc.nix} | 28 +- .../qbittorrent-nox.nix} | 20 +- .../default.nix => services/spoofdpi.nix} | 23 +- packages/bonfire-docs/book.toml | 16 + packages/bonfire-docs/default.nix | 167 ++++ packages/bonfire-docs/src/SUMMARY.md | 20 + packages/bonfire-docs/src/options/README.md | 27 + packages/bonfire-docs/src/packages/README.md | 0 packages/bonfire-docs/theme/catppuccin.css | 788 ++++++++++++++++++ packages/bonfire-docs/theme/index.hbs | 348 ++++++++ packages/default.nix | 5 +- 27 files changed, 2167 insertions(+), 150 deletions(-) delete mode 160000 nixosModules/bonfire/secrets create mode 100644 nixosModules/default.nix rename nixosModules/{ => misc}/bonfire/default.nix (90%) create mode 100644 nixosModules/misc/bonfire/secrets/.sops.yaml create mode 100644 nixosModules/misc/bonfire/secrets/catarina.yaml create mode 100644 nixosModules/misc/bonfire/secrets/default.nix rename nixosModules/{papermc/default.nix => services/papermc.nix} (92%) rename nixosModules/{qbittorrent-nox/default.nix => services/qbittorrent-nox.nix} (87%) rename nixosModules/{spoofdpi/default.nix => services/spoofdpi.nix} (62%) create mode 100644 packages/bonfire-docs/book.toml create mode 100644 packages/bonfire-docs/default.nix create mode 100644 packages/bonfire-docs/src/SUMMARY.md create mode 100644 packages/bonfire-docs/src/options/README.md create mode 100644 packages/bonfire-docs/src/packages/README.md create mode 100644 packages/bonfire-docs/theme/catppuccin.css create mode 100644 packages/bonfire-docs/theme/index.hbs diff --git a/.gitmodules b/.gitmodules index d75d6f5..151fd00 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,3 +1,3 @@ -[submodule "nixosModules/bonfire/secrets"] - path = nixosModules/bonfire/secrets +[submodule "nixosModules/misc/bonfire/secrets"] + path = nixosModules/misc/bonfire/secrets url = git@vcs.elnafo.ru:L-Nafaryus/bonfire-secrets.git diff --git a/config/git/config b/config/git/config index e1ff513..2598039 100644 --- a/config/git/config +++ b/config/git/config @@ -1,7 +1,7 @@ [user] name = L-Nafaryus email = l.nafaryus@gmail.com - signingKey = 9B576DE3 + signingKey = 86F1EA98B48FFB19 [commit] gpgsign = true [tag] diff --git a/flake.lock b/flake.lock index 6a38ade..f76e72e 100644 --- a/flake.lock +++ b/flake.lock @@ -32,15 +32,56 @@ "type": "gitlab" } }, + "blobs_3": { + "flake": false, + "locked": { + "lastModified": 1604995301, + "narHash": "sha256-wcLzgLec6SGJA8fx1OEN1yV/Py5b+U5iyYpksUY/yLw=", + "owner": "simple-nixos-mailserver", + "repo": "blobs", + "rev": "2cccdf1ca48316f2cfd1c9a0017e8de5a7156265", + "type": "gitlab" + }, + "original": { + "owner": "simple-nixos-mailserver", + "repo": "blobs", + "type": "gitlab" + } + }, "bonfire": { "inputs": { "crane": "crane_2", - "devenv": "devenv", "fenix": "fenix_2", "home-manager": "home-manager_2", "nixgl": "nixgl", "nixos-mailserver": "nixos-mailserver_2", - "nixpkgs": "nixpkgs_3", + "nixpkgs": "nixpkgs_2", + "oscuro": "oscuro_2", + "sops-nix": "sops-nix_2" + }, + "locked": { + "lastModified": 1714133223, + "narHash": "sha256-mappc4Lj+nVE3Xc7aw5+kqDSJdXs4ALYlRpegWtNoyY=", + "owner": "L-Nafaryus", + "repo": "bonfire", + "rev": "a2f306e7fc5abcf1c05e4cbe72c23d9e53588932", + "type": "github" + }, + "original": { + "owner": "L-Nafaryus", + "repo": "bonfire", + "type": "github" + } + }, + "bonfire_2": { + "inputs": { + "crane": "crane_3", + "devenv": "devenv", + "fenix": "fenix_3", + "home-manager": "home-manager_3", + "nixgl": "nixgl_2", + "nixos-mailserver": "nixos-mailserver_3", + "nixpkgs": "nixpkgs_4", "sops-nix": "sops-nix" }, "locked": { @@ -61,18 +102,24 @@ "inputs": { "devenv": "devenv_2", "flake-compat": [ + "oscuro", + "bonfire", "oscuro", "bonfire", "devenv", "flake-compat" ], "nixpkgs": [ + "oscuro", + "bonfire", "oscuro", "bonfire", "devenv", "nixpkgs" ], "pre-commit-hooks": [ + "oscuro", + "bonfire", "oscuro", "bonfire", "devenv", @@ -93,6 +140,21 @@ "type": "github" } }, + "catppuccin": { + "locked": { + "lastModified": 1718339789, + "narHash": "sha256-Q3fgY7huFE+uaw7BNsAl1x+FvjDAi3EDWPnlALJt5pM=", + "owner": "catppuccin", + "repo": "nix", + "rev": "73e06d5bd7ed34bdd0168030893ef8364fdc1d4a", + "type": "github" + }, + "original": { + "owner": "catppuccin", + "repo": "nix", + "type": "github" + } + }, "crane": { "inputs": { "nixpkgs": [ @@ -100,11 +162,11 @@ ] }, "locked": { - "lastModified": 1713979152, - "narHash": "sha256-apdecPuh8SOQnkEET/kW/UcfjCRb8JbV5BKjoH+DcP4=", + "lastModified": 1718474113, + "narHash": "sha256-UKrfy/46YF2TRnxTtKCYzqf2f5ZPRRWwKCCJb7O5X8U=", "owner": "ipetkov", "repo": "crane", - "rev": "a5eca68a2cf11adb32787fc141cddd29ac8eb79c", + "rev": "0095fd8ea00ae0a9e6014f39c375e40c2fbd3386", "type": "github" }, "original": { @@ -135,12 +197,38 @@ "type": "github" } }, + "crane_3": { + "inputs": { + "nixpkgs": [ + "oscuro", + "bonfire", + "oscuro", + "bonfire", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1713738183, + "narHash": "sha256-qd/MuLm7OfKQKyd4FAMqV4H6zYyOfef5lLzRrmXwKJM=", + "owner": "ipetkov", + "repo": "crane", + "rev": "f6c6a2fb1b8bd9b65d65ca9342dd0eb180a63f11", + "type": "github" + }, + "original": { + "owner": "ipetkov", + "repo": "crane", + "type": "github" + } + }, "devenv": { "inputs": { "cachix": "cachix", - "flake-compat": "flake-compat_3", + "flake-compat": "flake-compat_4", "nix": "nix_2", "nixpkgs": [ + "oscuro", + "bonfire", "oscuro", "bonfire", "nixpkgs" @@ -164,6 +252,8 @@ "devenv_2": { "inputs": { "flake-compat": [ + "oscuro", + "bonfire", "oscuro", "bonfire", "devenv", @@ -171,9 +261,11 @@ "flake-compat" ], "nix": "nix", - "nixpkgs": "nixpkgs_2", + "nixpkgs": "nixpkgs_3", "poetry2nix": "poetry2nix", "pre-commit-hooks": [ + "oscuro", + "bonfire", "oscuro", "bonfire", "devenv", @@ -204,11 +296,11 @@ "rust-analyzer-src": [] }, "locked": { - "lastModified": 1714112748, - "narHash": "sha256-jq6Cpf/pQH85p+uTwPPrGG8Ky/zUOTwMJ7mcqc5M4So=", + "lastModified": 1717827974, + "narHash": "sha256-ixopuTeTouxqTxfMuzs6IaRttbT8JqRW5C9Q/57WxQw=", "owner": "nix-community", "repo": "fenix", - "rev": "3ae4b908a795b6a3824d401a0702e11a7157d7e1", + "rev": "ab655c627777ab5f9964652fe23bbb1dfbd687a8", "type": "github" }, "original": { @@ -243,6 +335,36 @@ "type": "github" } }, + "fenix_3": { + "inputs": { + "nixpkgs": [ + "oscuro", + "bonfire", + "oscuro", + "bonfire", + "nixpkgs" + ], + "rust-analyzer-src": [ + "oscuro", + "bonfire", + "oscuro", + "bonfire" + ] + }, + "locked": { + "lastModified": 1713853552, + "narHash": "sha256-OOXi+9cSbst7Crah6UVxHe33O6HK91WgD2yU/p5/dqs=", + "owner": "nix-community", + "repo": "fenix", + "rev": "d596927635ddd8db224bbff6e4ccb08e42649eb5", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "fenix", + "type": "github" + } + }, "flake-compat": { "flake": false, "locked": { @@ -262,11 +384,11 @@ "flake-compat_2": { "flake": false, "locked": { - "lastModified": 1673956053, - "narHash": "sha256-4gtG9iQuiKITOjNQQeQIpoIB6b16fm+504Ch3sNKLd8=", + "lastModified": 1696426674, + "narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=", "owner": "edolstra", "repo": "flake-compat", - "rev": "35bb57c0c8d8b62bbfd284272c928ceb64ddbde9", + "rev": "0f9255e01c2351cc7d116c072cb317785dd33b33", "type": "github" }, "original": { @@ -278,11 +400,11 @@ "flake-compat_3": { "flake": false, "locked": { - "lastModified": 1696426674, - "narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=", + "lastModified": 1673956053, + "narHash": "sha256-4gtG9iQuiKITOjNQQeQIpoIB6b16fm+504Ch3sNKLd8=", "owner": "edolstra", "repo": "flake-compat", - "rev": "0f9255e01c2351cc7d116c072cb317785dd33b33", + "rev": "35bb57c0c8d8b62bbfd284272c928ceb64ddbde9", "type": "github" }, "original": { @@ -307,7 +429,38 @@ "type": "github" } }, + "flake-compat_5": { + "flake": false, + "locked": { + "lastModified": 1696426674, + "narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "0f9255e01c2351cc7d116c072cb317785dd33b33", + "type": "github" + }, + "original": { + "owner": "edolstra", + "repo": "flake-compat", + "type": "github" + } + }, "flake-utils": { + "locked": { + "lastModified": 1659877975, + "narHash": "sha256-zllb8aq3YO3h8B/U0/J1WBgAL8EX5yWf5pMj3G0NAmc=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "c0e246b9b83f637f4681389ecabcb2681b4f3af0", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_2": { "inputs": { "systems": "systems_2" }, @@ -325,7 +478,7 @@ "type": "github" } }, - "flake-utils_2": { + "flake-utils_3": { "inputs": { "systems": "systems_3" }, @@ -343,7 +496,7 @@ "type": "github" } }, - "flake-utils_3": { + "flake-utils_4": { "locked": { "lastModified": 1659877975, "narHash": "sha256-zllb8aq3YO3h8B/U0/J1WBgAL8EX5yWf5pMj3G0NAmc=", @@ -361,6 +514,8 @@ "gitignore": { "inputs": { "nixpkgs": [ + "oscuro", + "bonfire", "oscuro", "bonfire", "devenv", @@ -389,11 +544,11 @@ ] }, "locked": { - "lastModified": 1714042918, - "narHash": "sha256-4AItZA3EQIiSNAxliuYEJumw/LaVfrMv84gYyrs0r3U=", + "lastModified": 1718526747, + "narHash": "sha256-sKrD/utGvmtQALvuDj4j0CT3AJXP1idOAq2p+27TpeE=", "owner": "nix-community", "repo": "home-manager", - "rev": "0c5704eceefcb7bb238a958f532a86e3b59d76db", + "rev": "0a7ffb28e5df5844d0e8039c9833d7075cdee792", "type": "github" }, "original": { @@ -424,10 +579,36 @@ "type": "github" } }, + "home-manager_3": { + "inputs": { + "nixpkgs": [ + "oscuro", + "bonfire", + "oscuro", + "bonfire", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1713818326, + "narHash": "sha256-aw3xbVPJauLk/bbrlakIYxKpeuMWzA2feGrkIpIuXd8=", + "owner": "nix-community", + "repo": "home-manager", + "rev": "67de98ae6eed5ad6f91b1142356d71a87ba97f21", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "home-manager", + "type": "github" + } + }, "nix": { "inputs": { - "flake-compat": "flake-compat_2", + "flake-compat": "flake-compat_3", "nixpkgs": [ + "oscuro", + "bonfire", "oscuro", "bonfire", "devenv", @@ -455,6 +636,8 @@ "nix-github-actions": { "inputs": { "nixpkgs": [ + "oscuro", + "bonfire", "oscuro", "bonfire", "devenv", @@ -481,12 +664,16 @@ "nix_2": { "inputs": { "flake-compat": [ + "oscuro", + "bonfire", "oscuro", "bonfire", "devenv", "flake-compat" ], "nixpkgs": [ + "oscuro", + "bonfire", "oscuro", "bonfire", "devenv", @@ -511,7 +698,7 @@ }, "nixgl": { "inputs": { - "flake-utils": "flake-utils_3", + "flake-utils": "flake-utils", "nixpkgs": [ "oscuro", "bonfire", @@ -532,6 +719,31 @@ "type": "github" } }, + "nixgl_2": { + "inputs": { + "flake-utils": "flake-utils_4", + "nixpkgs": [ + "oscuro", + "bonfire", + "oscuro", + "bonfire", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1713543440, + "narHash": "sha256-lnzZQYG0+EXl/6NkGpyIz+FEOc/DSEG57AP1VsdeNrM=", + "owner": "guibou", + "repo": "nixGL", + "rev": "310f8e49a149e4c9ea52f1adf70cdc768ec53f8a", + "type": "github" + }, + "original": { + "owner": "guibou", + "repo": "nixGL", + "type": "github" + } + }, "nixos-mailserver": { "inputs": { "blobs": "blobs", @@ -539,6 +751,31 @@ "nixpkgs": [ "nixpkgs" ], + "nixpkgs-24_05": "nixpkgs-24_05" + }, + "locked": { + "lastModified": 1718398369, + "narHash": "sha256-ccOHDuTaUhD1DW6DGNXoDJNOwYx55rVNKECyqRzKRtE=", + "owner": "simple-nixos-mailserver", + "repo": "nixos-mailserver", + "rev": "54cbacb6eb9938bf1eaab7a7840fb527050c2af1", + "type": "gitlab" + }, + "original": { + "owner": "simple-nixos-mailserver", + "repo": "nixos-mailserver", + "type": "gitlab" + } + }, + "nixos-mailserver_2": { + "inputs": { + "blobs": "blobs_2", + "flake-compat": "flake-compat_2", + "nixpkgs": [ + "oscuro", + "bonfire", + "nixpkgs" + ], "utils": "utils" }, "locked": { @@ -555,11 +792,13 @@ "type": "gitlab" } }, - "nixos-mailserver_2": { + "nixos-mailserver_3": { "inputs": { - "blobs": "blobs_2", - "flake-compat": "flake-compat_4", + "blobs": "blobs_3", + "flake-compat": "flake-compat_5", "nixpkgs": [ + "oscuro", + "bonfire", "oscuro", "bonfire", "nixpkgs" @@ -582,11 +821,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1714076141, - "narHash": "sha256-Drmja/f5MRHZCskS6mvzFqxEaZMeciScCTFxWVLqWEY=", + "lastModified": 1718530797, + "narHash": "sha256-pup6cYwtgvzDpvpSCFh1TEUjw2zkNpk8iolbKnyFmmU=", "owner": "nixos", "repo": "nixpkgs", - "rev": "7bb2ccd8cdc44c91edba16c48d2c8f331fb3d856", + "rev": "b60ebf54c15553b393d144357375ea956f89e9a9", "type": "github" }, "original": { @@ -596,6 +835,21 @@ "type": "github" } }, + "nixpkgs-24_05": { + "locked": { + "lastModified": 1717144377, + "narHash": "sha256-F/TKWETwB5RaR8owkPPi+SPJh83AQsm6KrQAlJ8v/uA=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "805a384895c696f802a9bf5bf4720f37385df547", + "type": "github" + }, + "original": { + "id": "nixpkgs", + "ref": "nixos-24.05", + "type": "indirect" + } + }, "nixpkgs-regression": { "locked": { "lastModified": 1643052045, @@ -676,7 +930,39 @@ "type": "github" } }, + "nixpkgs-stable_4": { + "locked": { + "lastModified": 1718478900, + "narHash": "sha256-v43N1gZLcGkhg3PdcrKUNIZ1L0FBzB2JqhIYEyKAHEs=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "c884223af91820615a6146af1ae1fea25c107005", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "release-23.11", + "repo": "nixpkgs", + "type": "github" + } + }, "nixpkgs_2": { + "locked": { + "lastModified": 1713714899, + "narHash": "sha256-+z/XjO3QJs5rLE5UOf015gdVauVRQd2vZtsFkaXBq2Y=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "6143fc5eeb9c4f00163267708e26191d1e918932", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_3": { "locked": { "lastModified": 1692808169, "narHash": "sha256-x9Opq06rIiwdwGeK2Ykj69dNc2IvUH1fY55Wm7atwrE=", @@ -692,7 +978,7 @@ "type": "github" } }, - "nixpkgs_3": { + "nixpkgs_4": { "locked": { "lastModified": 1713714899, "narHash": "sha256-+z/XjO3QJs5rLE5UOf015gdVauVRQd2vZtsFkaXBq2Y=", @@ -710,7 +996,30 @@ }, "oscuro": { "inputs": { - "bonfire": "bonfire" + "bonfire": "bonfire", + "nixpkgs": [ + "oscuro", + "bonfire", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1714759244, + "narHash": "sha256-ZDH7WTsILPEIZuo3/C4QwOXTv7r1xoUxKOQSDFpdNEE=", + "owner": "L-Nafaryus", + "repo": "oscuro", + "rev": "68da7759c61b6d34f54087e3e845d8cc70702310", + "type": "github" + }, + "original": { + "owner": "L-Nafaryus", + "repo": "oscuro", + "type": "github" + } + }, + "oscuro_2": { + "inputs": { + "bonfire": "bonfire_2" }, "locked": { "lastModified": 1714131862, @@ -728,9 +1037,11 @@ }, "poetry2nix": { "inputs": { - "flake-utils": "flake-utils", + "flake-utils": "flake-utils_2", "nix-github-actions": "nix-github-actions", "nixpkgs": [ + "oscuro", + "bonfire", "oscuro", "bonfire", "devenv", @@ -756,14 +1067,18 @@ "pre-commit-hooks": { "inputs": { "flake-compat": [ + "oscuro", + "bonfire", "oscuro", "bonfire", "devenv", "flake-compat" ], - "flake-utils": "flake-utils_2", + "flake-utils": "flake-utils_3", "gitignore": "gitignore", "nixpkgs": [ + "oscuro", + "bonfire", "oscuro", "bonfire", "devenv", @@ -787,18 +1102,21 @@ }, "root": { "inputs": { + "catppuccin": "catppuccin", "crane": "crane", "fenix": "fenix", "home-manager": "home-manager", "nixos-mailserver": "nixos-mailserver", "nixpkgs": "nixpkgs", "oscuro": "oscuro", - "sops-nix": "sops-nix_2" + "sops-nix": "sops-nix_3" } }, "sops-nix": { "inputs": { "nixpkgs": [ + "oscuro", + "bonfire", "oscuro", "bonfire", "nixpkgs" @@ -822,16 +1140,39 @@ "sops-nix_2": { "inputs": { "nixpkgs": [ + "oscuro", + "bonfire", "nixpkgs" ], "nixpkgs-stable": "nixpkgs-stable_3" }, "locked": { - "lastModified": 1713892811, - "narHash": "sha256-uIGmA2xq41vVFETCF1WW4fFWFT2tqBln+aXnWrvjGRE=", + "lastModified": 1713775152, + "narHash": "sha256-xyP8h9jLQ0AmyPy40sIwL7/D03oVpXG9YHoYJ4ecYWA=", "owner": "Mic92", "repo": "sops-nix", - "rev": "f1b0adc27265274e3b0c9b872a8f476a098679bd", + "rev": "4371a1301c4d36cc791069d90ae522613a3a335e", + "type": "github" + }, + "original": { + "owner": "Mic92", + "repo": "sops-nix", + "type": "github" + } + }, + "sops-nix_3": { + "inputs": { + "nixpkgs": [ + "nixpkgs" + ], + "nixpkgs-stable": "nixpkgs-stable_4" + }, + "locked": { + "lastModified": 1718506969, + "narHash": "sha256-Pm9I/BMQHbsucdWf6y9G3xBZh3TMlThGo4KBbeoeczg=", + "owner": "Mic92", + "repo": "sops-nix", + "rev": "797ce4c1f45a85df6dd3d9abdc53f2691bea9251", "type": "github" }, "original": { diff --git a/flake.nix b/flake.nix index d9546e5..c8edff1 100644 --- a/flake.nix +++ b/flake.nix @@ -29,14 +29,19 @@ inputs.nixpkgs.follows = "nixpkgs"; inputs.rust-analyzer-src.follows = ""; }; + catppuccin = { + url = "github:catppuccin/nix"; + }; oscuro = { url = "github:L-Nafaryus/oscuro"; }; }; - outputs = { self, nixpkgs, home-manager, nixos-mailserver, sops-nix, crane, fenix, oscuro, ... }: { - - lib = import ./lib {}; + outputs = { self, nixpkgs, home-manager, nixos-mailserver, sops-nix, crane, fenix, catppuccin, oscuro, ... } @ inputs: + let + lib = import ./lib { inherit (nixpkgs) lib; }; + in { + inherit lib; nixosConfigurations = { astora = nixpkgs.lib.nixosSystem { @@ -46,8 +51,9 @@ ./nixosConfigurations/astora self.nixosModules.bonfire self.nixosModules.spoofdpi + (import ./nixosModules { lib = nixpkgs.lib; self = self; }).configModule ]; - specialArgs = { inherit self; }; + specialArgs = { inherit self inputs; }; }; catarina = nixpkgs.lib.nixosSystem { @@ -61,20 +67,13 @@ self.nixosModules.spoofdpi self.nixosModules.papermc self.nixosModules.qbittorrent-nox + (import ./nixosModules { lib = nixpkgs.lib; self = self; }).configModule ]; specialArgs = { inherit self; }; }; }; - nixosModules = { - bonfire = import ./nixosModules/bonfire { inherit self; }; - - spoofdpi = import ./nixosModules/spoofdpi { inherit self; }; - - papermc = import ./nixosModules/papermc { inherit self; }; - - qbittorrent-nox = import ./nixosModules/qbittorrent-nox { inherit self; }; - }; + nixosModules = lib.importNamedModules (import ./nixosModules { lib = nixpkgs.lib; self = self; }).modules; templates = { rust = { diff --git a/lib/default.nix b/lib/default.nix index 034011f..0110f0d 100644 --- a/lib/default.nix +++ b/lib/default.nix @@ -1,10 +1,17 @@ -{ ... }: -{ +{ lib, ... }: +rec { maintainers = import ./maintainers.nix; - mkApp = { drv, name ? drv.pname, binPath ? "/bin/${name}" }: - { - type = "app"; - program = "${drv}${binPath}"; - }; + moduleName = path: if builtins.baseNameOf (toString path) == "default.nix" then + builtins.baseNameOf (lib.removeSuffix "/default.nix" (toString path)) + else + builtins.baseNameOf (lib.removeSuffix ".nix" (toString path)); + + moduleNames = pathList: map (path: moduleName path) pathList; + + importModules = pathList: map (path: import path) pathList; + + importNamedModules = pathList: lib.listToAttrs ( + lib.zipListsWith (name: value: { inherit name value; }) (moduleNames pathList) (importModules pathList) + ); } diff --git a/lib/maintainers.nix b/lib/maintainers.nix index 0523da0..72af265 100644 --- a/lib/maintainers.nix +++ b/lib/maintainers.nix @@ -1,8 +1,8 @@ { L-Nafaryus = { - email = "l.nafaryus@gmail.com"; + email = "l.nafaryus@elnafo.ru"; github = "L-Nafaryus"; githubId = 37117584; - name = "George Kusayko"; + name = "L-Nafaryus"; }; } diff --git a/nixosConfigurations/astora/default.nix b/nixosConfigurations/astora/default.nix index 6878764..dcbf173 100644 --- a/nixosConfigurations/astora/default.nix +++ b/nixosConfigurations/astora/default.nix @@ -1,4 +1,4 @@ -{ pkgs, lib, ... }: +{ pkgs, lib, config, ... }: { system.stateVersion = "23.11"; @@ -45,16 +45,54 @@ videoDrivers = [ "nvidia" ]; - displayManager.gdm = { - enable = true; - autoSuspend = false; - }; - desktopManager.gnome.enable = true; - windowManager.awesome.enable = true; + #displayManager.gdm = { + # enable = true; + # autoSuspend = false; + # wayland = true; + #}; + #desktopManager.gnome.enable = true; + #windowManager.awesome.enable = true; wacom.enable = true; }; + services.greetd = let + hyprConfig = pkgs.writeText "greetd-hyprland-config" '' + exec-once = ${lib.getExe pkgs.greetd.regreet}; hyprctl dispatch exit + ''; + in { + enable = true; + settings = { + default_session = { + command = "${lib.getExe config.programs.hyprland.package} --config ${hyprConfig}"; + user = "greeter"; + }; + }; + }; + + programs.regreet = { + enable = true; + settings = { + GTK = { + application_prefer_dark_theme = true; + # TODO: provide gtk themes + # theme_name = "Catppuccin-Macchiato-Standard-Green-Dark"; + # icon_theme_name = "Catppuccin-Macchiato-Green-Cursors"; + # cursor_theme_name = "Papirus-Dark"; + # font_name = ""; + }; + appearance = { + greeting_msg = "Hey, you. You're finally awake."; + }; + }; + }; + + programs.hyprland = { + enable = true; + xwayland.enable = true; + }; + services.dbus.enable = true; + services.printing.enable = true; services.pipewire = { diff --git a/nixosConfigurations/astora/users.nix b/nixosConfigurations/astora/users.nix index fad01c4..58b2b35 100644 --- a/nixosConfigurations/astora/users.nix +++ b/nixosConfigurations/astora/users.nix @@ -1,10 +1,10 @@ -{ config, pkgs, lib, inputs, self, ... }: +{ config, pkgs, lib, self, inputs, ... }: { # Users users.users.l-nafaryus = { isNormalUser = true; description = "L-Nafaryus"; - extraGroups = [ "networkmanager" "wheel" "audio" "libvirtd" ]; + extraGroups = [ "networkmanager" "wheel" "audio" "libvirtd" "input" ]; group = "users"; uid = 1000; initialPassword = "nixos"; @@ -13,27 +13,31 @@ home-manager.useGlobalPkgs = true; home-manager.useUserPackages = true; + home-manager.backupFileExtension = "hmbackup"; - home-manager.users.l-nafaryus = { pkgs, ... }: { + home-manager.users.l-nafaryus = { pkgs, ... }: + let + hmConfig = config.home-manager.users.l-nafaryus; + in { home.stateVersion = "23.11"; home.username = "l-nafaryus"; home.homeDirectory = "/home/l-nafaryus"; + imports = [ + inputs.catppuccin.homeManagerModules.catppuccin + ]; home.packages = with pkgs; [ - gnupg + #gnupg git nnn - htop pass taskwarrior - tmux + #tmux gparted - gnomeExtensions.appindicator - gnomeExtensions.vitals xclip - firefox + (firefox.override { extraNativeMessagingHosts = [ passff-host ]; }) thunderbird discord @@ -74,13 +78,11 @@ xtuner aether-lv2 - obs-studio - obs-studio-plugins.obs-vkcapture - obs-studio-plugins.input-overlay - obs-studio-plugins.obs-pipewire-audio-capture + qbittorrent transmission-qt + telegram-desktop onlyoffice-bin @@ -91,12 +93,160 @@ steamtinkerlaunch - + eww + tor + networkmanagerapplet + #rofi-wayland + kgx + dunst + libnotify + playerctl + wl-gammarelay-rs + # btop + lua + # bat + musikcube + swww + hyprshot + (python3.withPackages (p: [ p.click ])) + mangohud + gamescope + libstrangle + webcord + wl-clipboard + cliphist + tree ]; + + xdg.portal = { + enable = true; + configPackages = with pkgs; [ + #xdg-desktop-portal-wlr + xdg-desktop-portal-hyprland + ]; + extraPortals = with pkgs; [ + xdg-desktop-portal-gtk + ]; + }; + catppuccin = { + # global, for all enabled programs + enable = true; + flavor = "macchiato"; + accent = "green"; + }; + + gtk = { + enable = true; + cursorTheme = { + name = "Papirus-Dark"; + size = 16; + }; + }; + + programs = { + fish = { + enable = true; + interactiveShellInit = '' + set fish_greeting + ''; + plugins = with pkgs.fishPlugins; map (p: { name = p.pname; src = p.src; }) [ + fzf-fish + tide # tide configure --auto --style=Lean --prompt_colors='True color' --show_time='12-hour format' --lean_prompt_height='Two lines' --prompt_connection=Disconnected --prompt_spacing=Compact --icons='Many icons' --transient=No + grc + hydro + ]; + }; + bat.enable = true; + btop = { + enable = true; + settings = { + cpu_bottom = true; + proc_tree = true; + }; + }; + fzf.enable = true; + tmux.enable = true; + lazygit.enable = true; + gpg = { + enable = true; + homedir = "${hmConfig.xdg.configHome}/gnupg"; + mutableKeys = true; + mutableTrust = true; + }; + + alacritty = { + enable = true; + settings = { + font = { + size = 10; + }; + }; + }; + rofi = { + enable = true; + package = pkgs.rofi-wayland; + terminal = "${lib.getExe hmConfig.programs.alacritty.package}"; + cycle = true; + extraConfig = { + show-icons = true; + disable-history = false; + }; + theme = let inherit (hmConfig.lib.formats.rasi) mkLiteral; in { + "*" = { + border-col = mkLiteral "#a6da95"; + }; + window = { + border-radius = mkLiteral "5px"; + }; + }; + }; + + obs-studio = { + enable = true; + plugins = with pkgs.obs-studio-plugins; [ + obs-vkcapture + input-overlay + obs-pipewire-audio-capture + wlrobs + ]; + }; + }; + + services = { + gpg-agent = { + enable = true; + defaultCacheTtl = 3600; + defaultCacheTtlSsh = 3600; + enableSshSupport = true; + pinentryPackage = pkgs.pinentry-gtk2; + enableFishIntegration = true; + enableBashIntegration = true; + }; + + hypridle = { + enable = true; + settings = { + general = { + after_sleep_cmd = "${pkgs.hyprland}/bin/hyprctl dispatch dpms on"; + ignore_dbus_inhibit = false; + }; + listener = [ + { + timeout = 300; + on-timeout = "${pkgs.hyprland}/bin/hyprctl dispatch dpms off"; + on-resume = "${pkgs.hyprland}/bin/hyprctl dispatch dpms on"; + } + ]; + }; + }; + }; + + # --- xdg = { enable = true; mime.enable = true; + userDirs.enable = true; }; dconf.settings = { @@ -106,11 +256,15 @@ }; }; + home.sessionVariables = { + HYPRSHOT_DIR = "${hmConfig.xdg.userDirs.pictures}/screenshots"; + }; + home.file = { - ".config/gnupg/gpg-agent.conf".text = '' - default-cache-ttl 3600 - pinentry-program ${pkgs.pinentry.gtk2}/bin/pinentry - ''; + #"gnupg/gpg-agent.conf".text = '' + # default-cache-ttl 3600 + # pinentry-program ${pkgs.pinentry.gtk2}/bin/pinentry + #''; ".config/git/config".source = "${config.bonfire.configDir}/git/config"; @@ -121,11 +275,11 @@ }; }; - programs.gnupg.agent = { - enable = true; - enableSSHSupport = true; - pinentryPackage = pkgs.pinentry-gnome3; - }; + #programs.gnupg.agent = { + # enable = true; + # enableSSHSupport = true; + # pinentryPackage = pkgs.pinentry-gnome3; + #}; environment.variables = let makePluginPath = name: (lib.makeSearchPath name [ @@ -140,6 +294,11 @@ VST3_PATH = makePluginPath "vst3"; }; + environment.sessionVariables = { + # hint electron applications to use wayland + NIXOS_OZONE_WL = "1"; + }; + systemd.user.extraConfig = "DefaultLimitNOFILE=524288"; programs.virt-manager.enable = true; diff --git a/nixosConfigurations/catarina/default.nix b/nixosConfigurations/catarina/default.nix index 1a7e101..fdafe8e 100644 --- a/nixosConfigurations/catarina/default.nix +++ b/nixosConfigurations/catarina/default.nix @@ -34,6 +34,7 @@ in { hostPlatform = lib.mkDefault "x86_64-linux"; config.allowUnfree = true; config.cudaSupport = false; + config.packageOverrides = super: { lego = bonfire-pkgs.lego; }; @@ -138,11 +139,6 @@ in { loginAccounts = config.bonfire.secrets.catarina.mailAccounts; }; - services.jellyfin = { - enable = false; - openFirewall = true; - }; - services.spoofdpi.enable = true; services.btrfs.autoScrub = { @@ -193,6 +189,7 @@ in { virtualisation = { containers.enable = true; + podman = { enable = true; dockerCompat = true; diff --git a/nixosConfigurations/catarina/hardware.nix b/nixosConfigurations/catarina/hardware.nix index 3bdf74d..98502a5 100644 --- a/nixosConfigurations/catarina/hardware.nix +++ b/nixosConfigurations/catarina/hardware.nix @@ -137,7 +137,7 @@ allowedTCPPorts = [ 80 443 3001 25600 8080 8085 ]; }; - interfaces.wlp8s0 = { + interfaces.enp9s0 = { useDHCP = false; ipv4.addresses = [ { address = "192.168.156.102"; @@ -145,23 +145,10 @@ } ]; }; - defaultGateway = { - address = "192.168.156.1"; - interface = null; - metric = null; - }; + defaultGateway = "192.168.156.1"; nameservers = [ "192.168.156.1" "8.8.8.8" ]; }; - services.resolved = { - enable = false; - dnssec = "true"; - extraConfig = '' - DNSOverTLS=yes - ''; - fallbackDns = [ "8.8.8.8" ]; - }; - services.logind.lidSwitchExternalPower = "ignore"; # Common diff --git a/nixosModules/bonfire/secrets b/nixosModules/bonfire/secrets deleted file mode 160000 index 31c9b19..0000000 --- a/nixosModules/bonfire/secrets +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 31c9b19efdaa613e965eae25bbd2abd344a1bccf diff --git a/nixosModules/default.nix b/nixosModules/default.nix new file mode 100644 index 0000000..79922ba --- /dev/null +++ b/nixosModules/default.nix @@ -0,0 +1,20 @@ +{ lib, check ? true, self, ... }: +rec { + modules = [ + ./misc/bonfire/default.nix + ./services/papermc.nix + ./services/qbittorrent-nox.nix + ./services/spoofdpi.nix + ]; + + configModule = { config, pkgs, ... }: { + + config = { + # Module type checking + _module.check = check; + #_module.args.baseModules = modules; + #_module.args.pkgs = lib.mkDefault pkgs; + _module.args.bonpkgs = self.packages.${pkgs.system}; + }; + }; +} diff --git a/nixosModules/bonfire/default.nix b/nixosModules/misc/bonfire/default.nix similarity index 90% rename from nixosModules/bonfire/default.nix rename to nixosModules/misc/bonfire/default.nix index fb32cae..58fd959 100644 --- a/nixosModules/bonfire/default.nix +++ b/nixosModules/misc/bonfire/default.nix @@ -1,13 +1,12 @@ -{ self, ... }: { config, lib, ... }: with lib; let cfg = config.bonfire; in { - options= { + options = { bonfire = { home = mkOption { type = types.path; - default = ../../.; + default = ../../../.; description = "Bonfire root directory"; }; @@ -25,6 +24,7 @@ in { secrets = mkOption { type = types.attrs; + description = "Secrets will be here after evaluation"; default = {}; }; }; diff --git a/nixosModules/misc/bonfire/secrets/.sops.yaml b/nixosModules/misc/bonfire/secrets/.sops.yaml new file mode 100644 index 0000000..9b451e4 --- /dev/null +++ b/nixosModules/misc/bonfire/secrets/.sops.yaml @@ -0,0 +1,9 @@ +keys: + - &astora age1u9xr3tmwskfsrxg6gus3hmh9eakjh2h22jklfmcu33kassaraues435vvc + - &catarina age1wyz7cfldqe9hh8qyw2qm42hkq9s7qdwqnrnv0u3s6vstv9649v0sh0z4em +creation_rules: + - path_regex: catarina.(yaml|env|txt)$ + key_groups: + - age: + - *astora + - *catarina diff --git a/nixosModules/misc/bonfire/secrets/catarina.yaml b/nixosModules/misc/bonfire/secrets/catarina.yaml new file mode 100644 index 0000000..0162e24 --- /dev/null +++ b/nixosModules/misc/bonfire/secrets/catarina.yaml @@ -0,0 +1,46 @@ +dns: ENC[AES256_GCM,data:rz909/BAd2XUjS+wRfriTriv+Dns6eXMqpZEjdln8zkjK6GrMN5p9H4tMFOHwJz5/YRD3Eix9Z8MYsEbpQeGBAFieN7b24gucV+p1ScZYpIyWo1sNLILMGPp1LH2aw==,iv:+TJJ/jB4ScP+6kJD/XkiVy/R5aPmj25PuI1RbCyaKL8=,tag:03AAg9SV4xAdTF7tn9q26Q==,type:str] +users: + root: ENC[AES256_GCM,data:tCyMduL4RAyqQlPngwkQBHPTQF36Lb3k9BDtEF97vwXOrsgBFxeLO3nyKi8WbDNOQ6PshiN5gq2ATBmhhWIN5mE6ZqDBb8qraA==,iv:1EfQVZkc6L7W+CeIdQruIrieBVAtp4f06O4T0CeXO4M=,tag:h7k4OufndS0UHfNy16HS6g==,type:str] + l-nafaryus: ENC[AES256_GCM,data:5B4qaUe/8TBg9i47YpMkX/Pt0tcb5QYVhJc92liXf/3SzItaFIfH7ZNggJmu2vVXa/NS1C6Q35vNFX8I07fKqXc9n0IAyLuKRA==,iv:qSdBwmR7QdD4JODwVb8gc/A55GZ2ldlurXtaGDuhXSQ=,tag:N8kvy1SSq/f/AMcwsSUpMQ==,type:str] +database: + git: ENC[AES256_GCM,data:drfCQxPKXXtbmF4de50QXX8Kh+7gxI/W2bpKCmQVn0A=,iv:W/hAzkBj+vu5FQwzBs+L3m++Xf+cQVUFUCTVMhfus5A=,tag:2cmbYVpKHXVC8y51SfeUKA==,type:str] +mail: + l-nafaryus: ENC[AES256_GCM,data:Gp/8pSPOwkdkcSZVPZrnWs+9Kk56O0r78z11tpEExREmcX4c2MPgtlYMrkqYItsG4JU/hLxXCaXK07xx,iv:LHrLnwosaYQpBVukgqOsPDmv3U/AUE0wx227Id11S6E=,tag:CB86NR1STM728R8KHXpreQ==,type:str] + git: ENC[AES256_GCM,data:5UF4+YdAHBzNiqRXtSc15SOg2PCN+Cz7T89o8iTuRsZ5jrdXfBl8np9rVB/uStd+Z+dhQnQ2QCT2Gfxv,iv:boncugsEKxDOLy5qLxFg5ojpb0hUYsCg5QHcJArWMfU=,tag:mjhyu4Cu0d0sD/xTbEZMtQ==,type:str] + kirill: ENC[AES256_GCM,data:ucG5gukNlnC+rA45RstJ/IA7oxSl+B3TWOBPGyyOG2g+VMgjqefv7bL+aHJhikL/WCUgYUXfK6d18bqu,iv:mZVL1POZK3DbFJshbPEGrOdS+iaaeg4OcBqtZ14vOo4=,tag:dIGS7cXZWTM250ufyMzP1g==,type:str] +gitea: + mail: ENC[AES256_GCM,data:Kn1UjRsCG9KC9SKhYUXOZ5fsvvTIcfqPMppbWxAj,iv:lKsVTZdXBr8cXzizHEcf0uFdhaqxnIDKlAr++IC14m8=,tag:EwKeSjAvI7hUlMMx9N864Q==,type:str] +gitea-runner: + master-token: ENC[AES256_GCM,data:WIyXjGPl7FbrrJSNIR7kVS2Bo4od40YlY/RrgaKJ2XVYnpgIjbAP558PluclY3dLeg==,iv:doAMWY7uuNo4MYNOdMhn16pL1KgqtC+8eEbSL5QlOFQ=,tag:r/db0wNlLin5IQHzR/xL0g==,type:str] +papermc: + rcon: ENC[AES256_GCM,data:5jdkx6jpbao9,iv:arXGkrBGsfYXDU2O80QzszBmgS5H9OOPm9rvI1H4QX4=,tag:LcZhmjuj6bNqeLJViFohdw==,type:str] +discordToken: ENC[AES256_GCM,data:qHaCz/AZWf5N2tj/utu/6eZU+id50sj7Xv4d6hU0YDcIEkrAebIO5hik+Dk1xsobuhL7YX8iuCwPDLH/lwE/beI/sbzLffsszqw=,iv:344OGivr7aFtsNMch7F/GyMhd6YC+L/r0kEybevKe08=,tag:vgbj6Kp5Vjn208kmx7Ppvg==,type:str] +sops: + kms: [] + gcp_kms: [] + azure_kv: [] + hc_vault: [] + age: + - recipient: age1u9xr3tmwskfsrxg6gus3hmh9eakjh2h22jklfmcu33kassaraues435vvc + enc: | + -----BEGIN AGE ENCRYPTED FILE----- + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBCdkhuV3ljWXhLSDIvMkwr + LzBEZGhublVkNlluSkhoeGR3SjNrNkdBSUhBClV6YlNVTURwZE1kcm1YalBha1Z1 + QS96R1hHQXFTeGdyWVNsTVpZWnFpTGMKLS0tIDJRWjF4eS9XS29acFBpNVBDWGlU + S1loWHQrWGVXcitmQmF6VWdsYUkwdmMKLgSt3DdJndwL+faxDjD3BxDjPBLHtcWg + ZphzpRu8oMw/zMHwjoGS/l8X/KxPNyGMNBXQrK4sCh4S3S5BOeybIQ== + -----END AGE ENCRYPTED FILE----- + - recipient: age1wyz7cfldqe9hh8qyw2qm42hkq9s7qdwqnrnv0u3s6vstv9649v0sh0z4em + enc: | + -----BEGIN AGE ENCRYPTED FILE----- + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBlMzNWRHdNbHk5NERXb01s + Lzltd21jUHE1WjB1LzU5dC9FdCtwSDQvUDJBCmlzNGpPcVZSTnViUGQ0RmxndWVO + aDlXRlY2V2xta0hJa0xRVmp5VGp0ZnMKLS0tIEhsYWkwVW9pSlNxc0xZRnRqRVk0 + QzJITlJIQzVXUFZFWEljNzJmU2dZTTAK9799iq5gxCjPwBCWRzIIuOT/LDZ5Bhnv + CszvH6QZs+HEPDqzqcik3ewbFu/mDygmB68bJe/ccUZi4pWxemRkYg== + -----END AGE ENCRYPTED FILE----- + lastmodified: "2024-05-05T17:02:03Z" + mac: ENC[AES256_GCM,data:nlFMfwUt2EsDHiFSrrTYJVtpYpWYcufG+ZMXEYZNhX1ozeV0zieFccBjcaojHF77bpGtER58NEqOfS8kXGltyc2Mmg810VxcRzrK5LiJA0mMlA15oo3G+EkFcqd+MhZ5OnodAdPkJN5aUafH1BEVfC1o4ebngXMp72RGuf4kEg4=,iv:P69tDcWYWkESp2ZMUVifl5PEqVmfcs4IuvpFwJuNVDU=,tag:gAxbm/LEtFB+AO9nR0tthg==,type:str] + pgp: [] + unencrypted_suffix: _unencrypted + version: 3.8.1 diff --git a/nixosModules/misc/bonfire/secrets/default.nix b/nixosModules/misc/bonfire/secrets/default.nix new file mode 100644 index 0000000..a5067a1 --- /dev/null +++ b/nixosModules/misc/bonfire/secrets/default.nix @@ -0,0 +1,41 @@ +{ config }: +{ + catarina = { + sops = { + defaultSopsFile = ./catarina.yaml; + age.keyFile = "/var/lib/secrets/sops-nix/catarina.txt"; + secrets = { + "dns" = {}; + + "users/root" = { neededForUsers = true; }; + "users/l-nafaryus" = { neededForUsers = true; }; + + "database/git" = { owner = "git"; group = "gitea"; }; + + "mail/l-nafaryus" = {}; + "mail/git" = {}; + "mail/kirill" = {}; + + "gitea/mail" = { owner = "git"; group = "gitea"; }; + "gitea-runner/master-token" = {}; + + "papermc/rcon" = { owner = "papermc"; group = "papermc"; }; + + discordToken = { owner = "oscuro"; group = "oscuro"; }; + }; + }; + + mailAccounts = { + "l.nafaryus@elnafo.ru" = { + hashedPasswordFile = config.sops.secrets."mail/l-nafaryus".path; + aliases = [ "l-nafaryus@elnafo.ru" ]; + }; + "kirill@elnafo.ru" = { + hashedPasswordFile = config.sops.secrets."mail/kirill".path; + }; + "git@elnafo.ru" = { + hashedPasswordFile = config.sops.secrets."mail/git".path; + }; + }; + }; +} diff --git a/nixosModules/papermc/default.nix b/nixosModules/services/papermc.nix similarity index 92% rename from nixosModules/papermc/default.nix rename to nixosModules/services/papermc.nix index f2e1e37..faf8fc1 100644 --- a/nixosModules/papermc/default.nix +++ b/nixosModules/services/papermc.nix @@ -1,4 +1,3 @@ -{ self, ... }: { config, lib, pkgs, ... }: with lib; let @@ -12,7 +11,7 @@ let whitelistFile = pkgs.writeText "whitelist.json" (builtins.toJSON cfg.whitelist); - opsFile = pkgs.writeText "whitelist.json" + opsFile = pkgs.writeText "ops.json" (builtins.toJSON cfg.ops); cfgToString = v: if builtins.isBool v then boolToString v else toString v; @@ -50,12 +49,12 @@ let in { options.services.papermc = { - enable = mkEnableOption "Enables the PaperMC service."; + enable = mkEnableOption "PaperMC service"; openFirewall = mkOption { type = types.bool; default = false; - description = lib.mdDoc '' + description = '' Whether to open ports in the firewall for the server. ''; }; @@ -63,7 +62,7 @@ in { eula = mkOption { type = types.bool; default = false; - description = lib.mdDoc '' + description = '' Whether you agree to [Mojangs EULA](https://account.mojang.com/documents/minecraft_eula). This option must be set to `true` to run Minecraft server. ''; @@ -72,7 +71,7 @@ in { dataDir = mkOption { type = types.path; default = "/var/lib/papermc"; - description = lib.mdDoc '' + description = '' Directory to store Minecraft database and other state/data files. ''; }; @@ -80,14 +79,15 @@ in { whitelist = mkOption { type = types.listOf types.attrs; default = {}; - description = lib.mdDoc '' + description = '' This is a mapping from Minecraft usernames to UUIDs. ''; }; ops = mkOption { type = types.listOf types.attrs; - default = {}; + description = "Whitelist with players / operators."; + default = []; }; serverProperties = mkOption { @@ -107,7 +107,7 @@ in { "rcon.password" = "hunter2"; } ''; - description = lib.mdDoc '' + description = '' Minecraft server properties for the server.properties file. See for documentation on these values. @@ -117,12 +117,11 @@ in { rconPasswordFile = mkOption { type = types.nullOr types.str; default = null; + description = "Path to file with rcon password."; example = "/var/lib/secrets/papermc/rconpw"; }; - package = mkPackageOption pkgs "papermc" { - example = "papermc_6_6_6"; - }; + package = mkPackageOption pkgs "papermc" {}; jvmOpts = mkOption { type = types.separatedString " "; @@ -131,18 +130,19 @@ in { example = "-Xms4092M -Xmx4092M -XX:+UseG1GC -XX:+CMSIncrementalPacing " + "-XX:+CMSClassUnloadingEnabled -XX:ParallelGCThreads=2 " + "-XX:MinHeapFreeRatio=5 -XX:MaxHeapFreeRatio=10"; - description = lib.mdDoc "JVM options for the Minecraft server."; + description = "JVM options for the Minecraft server."; }; extraPreStart = mkOption { type = types.lines; + description = "Extra shell commands for service pre-start hook."; default = ''''; }; }; config = mkIf cfg.enable { users.users.papermc = { - description = "Minecraft server service user"; + description = "Minecraft server service user."; home = cfg.dataDir; createHome = true; isSystemUser = true; diff --git a/nixosModules/qbittorrent-nox/default.nix b/nixosModules/services/qbittorrent-nox.nix similarity index 87% rename from nixosModules/qbittorrent-nox/default.nix rename to nixosModules/services/qbittorrent-nox.nix index dd786ce..0048a3a 100644 --- a/nixosModules/qbittorrent-nox/default.nix +++ b/nixosModules/services/qbittorrent-nox.nix @@ -1,61 +1,61 @@ -{ self, ... }: { config, lib, pkgs, ... }: with lib; let cfg = config.services.qbittorrent-nox; in { options.services.qbittorrent-nox = { - enable = mkEnableOption "Enables the qbittorrent-nox services"; + enable = mkEnableOption "Enables the qbittorrent-nox services."; port = mkOption rec { type = types.int; default = 6969; example = default; - description = "Torrenting port"; + description = "Torrenting port."; }; webuiPort = mkOption rec { type = types.port; default = 8080; example = default; - description = "WebUI port"; + description = "WebUI port."; }; dataDir = mkOption rec { type = types.path; default = "/var/lib/qbittorrent-nox"; example = default; - description = "Directory to store qbittorrent-nox data files"; + description = "Directory to store qbittorrent-nox data files."; }; user = mkOption { type = types.str; default = "qbittorrent-nox"; - description = lib.mdDoc "User account under which qbittorrent-nox runs."; + description = "User account under which qbittorrent-nox runs."; }; group = mkOption { type = types.str; default = "qbittorrent-nox"; - description = lib.mdDoc "Group under which qbittorrent-nox runs."; + description = "Group under which qbittorrent-nox runs."; }; openFirewall = mkOption { type = types.bool; default = false; - description = "Open services.qbittorrent-nox.port"; + description = "Open `services.qbittorrent-nox.port`."; }; package = mkOption { type = types.package; default = pkgs.qbittorrent-nox; - description = "The qbittorrent package to use"; + defaultText = literalExpression "pkgs.qbittorrent-nox"; + description = "The qbittorrent package to use."; }; }; config = mkIf cfg.enable { users.users.qbittorrent-nox = { - description = "qbittorrent-nox service user"; + description = "qbittorrent-nox service user."; home = cfg.dataDir; createHome = true; isSystemUser = true; diff --git a/nixosModules/spoofdpi/default.nix b/nixosModules/services/spoofdpi.nix similarity index 62% rename from nixosModules/spoofdpi/default.nix rename to nixosModules/services/spoofdpi.nix index 8dc143c..edd577d 100644 --- a/nixosModules/spoofdpi/default.nix +++ b/nixosModules/services/spoofdpi.nix @@ -1,38 +1,43 @@ -{ self, ... }: -{ config, lib, pkgs, ... }: +{ config, lib, bonpkgs, ... }: with lib; let cfg = config.services.spoofdpi; - pkg = self.packages.${pkgs.system}.spoofdpi; in { options.services.spoofdpi = { - enable = mkEnableOption "Enables the SpoofDPI service"; + enable = mkEnableOption "SpoofDPI service"; + + package = mkOption { + type = types.package; + default = bonpkgs.spoofdpi; + defaultText = literalExpression "bonpkgs.spoofdpi"; + description = "The package to use."; + }; address = mkOption rec { type = types.str; default = "127.0.0.1"; example = default; - description = "Listen address"; + description = "Listen address."; }; port = mkOption rec { type = types.port; default = 8080; example = default; - description = "Port"; + description = "Port."; }; openFirewall = mkOption { type = types.bool; default = false; - description = "Open services.spoofdpi.port"; + description = "Open `services.spoofdpi.port`."; }; dns = mkOption rec { type = types.str; default = "8.8.8.8"; example = default; - description = "DNS server"; + description = "DNS server."; }; }; @@ -42,7 +47,7 @@ in { after = [ "network.target" ]; serviceConfig = { Restart = "on-failure"; - ExecStart = "${pkg}/bin/spoof-dpi -no-banner -addr ${cfg.address} -port ${toString cfg.port} -dns ${cfg.dns}"; + ExecStart = "${lib.getExe cfg.package} -no-banner -addr ${cfg.address} -port ${toString cfg.port} -dns ${cfg.dns}"; DynamicUser = "yes"; }; }; diff --git a/packages/bonfire-docs/book.toml b/packages/bonfire-docs/book.toml new file mode 100644 index 0000000..3cbc140 --- /dev/null +++ b/packages/bonfire-docs/book.toml @@ -0,0 +1,16 @@ +[book] +title = "bonfire" +authors = ["L-Nafaryus"] +description = "Bonfire" +language = "en" +multilingual = false +src = "src" + +[output.html] +default-theme = "macchiato" +preferred-dark-theme = "macchiato" +additional-css = ["./theme/catppuccin.css"] +no-section-label = true +git-repository-url = "https://github.com/L-Nafaryus/bonfire" +git-repository-icon = "fa-github" +cname = "elnafo.ru" diff --git a/packages/bonfire-docs/default.nix b/packages/bonfire-docs/default.nix new file mode 100644 index 0000000..570c58c --- /dev/null +++ b/packages/bonfire-docs/default.nix @@ -0,0 +1,167 @@ +{ + bonfire, + lib, + pkgs, + ... +}: +let + version = bonfire.shortRev or bonfire.dirtyShortRev or "unknown"; + projectPath = ../../.; + modulesPath = ../../nixosModules; + + links = [ + { + hostname = "vcs-elnafo"; + url = "https://vcs.elnafo.ru/L-Nafaryus/bonfire/blob/master"; + } + { + hostname = "github"; + url = "https://github.com/L-Nafaryus/bonfire/blob/master"; + } + ]; + + formatDeclaration = declaration: + if lib.hasPrefix (toString modulesPath) (toString declaration) then + let subpath = lib.removePrefix (toString projectPath + "/") (toString declaration); + in map ({ hostname, url }: { + url = "${url}/${subpath}"; + name = "<${hostname}:bonfire/${subpath}>"; + }) links + else + # skip external declarations + lib.singleton declaration; + + nixosModules = (import modulesPath { inherit lib; check = false; }); + + evaluatedModules = lib.evalModules { + modules = nixosModules.modules ++ [ nixosModules.configModule ]; + }; + + optionsDoc = pkgs.nixosOptionsDoc { + options = builtins.removeAttrs evaluatedModules.options [ + "_module" + "system" + ]; + + transformOptions = option: option // { + declarations = lib.unique ( + lib.flatten (map (declaration: formatDeclaration declaration) option.declarations) ++ + option.declarations + ); + }; + documentType = "none"; + revision = version; + }; + + systems = builtins.attrNames bonfire.packages; + derivations = lib.flatten ( + map (packages: ( + map (name: packages.${name}) (builtins.attrNames packages) + )) (map (system: bonfire.packages.${system}) systems)); + + renderMaintainers = maintainers: lib.concatStringsSep ", " ( + let + maintainer = mt: if mt?github then "[${mt.name}](https://github.com/${mt.github})" else mt.name; + email = mt: if mt?email then "<[${mt.email}](mailto:${mt.email})>" else ""; + in map (mt: maintainer mt + email mt) maintainers + ); + + renderPlatforms = platforms: if platforms != lib.platforms.none then + if platforms == lib.platforms.all then + "all" + else + lib.concatStringsSep ", " (map (platform: "__${platform}__") platforms) + else ""; + + renderPackage = drv: '' + ## ${drv.pname} + + ${lib.optionalString (drv.meta?description) drv.meta.description} + + ${lib.optionalString (drv.meta?homepage) "[Homepage](${drv.meta.homepage})"} + + Version: __${drv.version}__ + + ${lib.optionalString (drv.meta?license) "License: [${drv.meta.license.fullName}](${drv.meta.license.url})"} + + Outputs: ${lib.concatStringsSep ", " (map (o: "__${o}__") drv.outputs)} + + ${lib.optionalString (drv.meta?mainProgram) "Provided programs: __${drv.meta.mainProgram}__"} + + ${lib.optionalString (drv.meta?maintainers) "Maintainers: ${renderMaintainers drv.meta.maintainers}"} + + ${lib.optionalString (drv.meta?platforms) "Platforms: ${renderPlatforms drv.meta.platforms}"} + ''; + + renderImage = drv: '' + ## ${drv.imageName} + + ${lib.optionalString (drv.meta?description) drv.meta.description} + + ${lib.optionalString (drv.meta?homepage) "[Homepage](${drv.meta.homepage})"} + + Tag: __${drv.imageTag}__ + + ${lib.optionalString (drv.fromImage != null) "From: __${drv.fromImage.imageName}__"} + + ${lib.optionalString (drv.meta?license) "License: ${if lib.isList drv.meta.license then (map (license: "[${drv.meta.license.fullName}](${drv.meta.license.url})") drv.meta.license) else "[${drv.meta.license.fullName}](${drv.meta.license.url})"}"} + + ${lib.optionalString (drv.meta?maintainers) "Maintainers: ${renderMaintainers drv.meta.maintainers}"} + + ${lib.optionalString (drv.meta?platforms) "Platforms: ${renderPlatforms drv.meta.platforms}"} + ''; + + packagesDoc = pkgs.writeText "packages.md" + (lib.concatStringsSep "\n" (map (drv: + if drv?imageTag then renderImage drv else renderPackage drv) derivations)); + +in +pkgs.stdenvNoCC.mkDerivation { + pname = "bonfire-docs"; + inherit version; + + src = lib.fileset.toSource { + root = ./.; + fileset = lib.fileset.unions [ + ./src + ./book.toml + ./theme + ]; + }; + + nativeBuildInputs = [ pkgs.mdbook ]; + dontPatch = true; + dontConfigure = true; + doCheck = false; + + buildPhase = '' + runHook preBuild + ln -s ${../../README.md} src/README.md + ln -s ${optionsDoc.optionsCommonMark} src/options/modules.md + ln -s ${packagesDoc} src/packages/packages.md + mdbook build + runHook postBuild + ''; + + installPhase = '' + runHook preInstall + mv book $out + runHook postInstall + ''; + + passthru = { + serve = pkgs.writeShellApplication { + name = "server"; + runtimeInputs = [ pkgs.python3 ]; + text = "python -m http.server --bind 127.0.0.1"; + }; + }; + + meta = with lib; { + description = "Bonfire HTML documentation."; + license = licenses.mit; + maintainers = with bonfire.lib.maintainers; [ L-Nafaryus ]; + platforms = lib.platforms.all; + }; +} + diff --git a/packages/bonfire-docs/src/SUMMARY.md b/packages/bonfire-docs/src/SUMMARY.md new file mode 100644 index 0000000..5acc2f8 --- /dev/null +++ b/packages/bonfire-docs/src/SUMMARY.md @@ -0,0 +1,20 @@ +# Summary + +[Introduction](README.md) + +- [Getting started](getting-started/README.md) + - [Stable Nix](getting-started/stable-nix.md) + - [Flakes](getting-started/flakes.md) + +- [Packages](packages/README.md) + - [packages](packages/packages.md) + +- [Module options](options/README.md) + - [nixosModules](options/modules.md) + +- [FAQ](faq.md) + +- [Changelog](NEWS.md) + +- [Contributing](CONTRIBUTING.md) + diff --git a/packages/bonfire-docs/src/options/README.md b/packages/bonfire-docs/src/options/README.md new file mode 100644 index 0000000..7a0ec82 --- /dev/null +++ b/packages/bonfire-docs/src/options/README.md @@ -0,0 +1,27 @@ +# Module options + +First, you need to add this project to your flake inputs: + +```nix +{ + inputs = { + nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable"; + bonfire.url = "github:L-Nafaryus/bonfire"; + }; + outputs = { nixpkgs, bonfire, ... }: + { ... } +} +``` + +After, you can use in a NixOS configuration like so + +```nix +{ + nixosConfigurations.foo = nixpkgs.lib.nixosSystem { + system = "x86_64-linux"; + modules = [ + bonfire.nixosModules.bonfire + ... + ]; + }; +} diff --git a/packages/bonfire-docs/src/packages/README.md b/packages/bonfire-docs/src/packages/README.md new file mode 100644 index 0000000..e69de29 diff --git a/packages/bonfire-docs/theme/catppuccin.css b/packages/bonfire-docs/theme/catppuccin.css new file mode 100644 index 0000000..8d46878 --- /dev/null +++ b/packages/bonfire-docs/theme/catppuccin.css @@ -0,0 +1,788 @@ +.mocha.hljs { + color: #cdd6f4; + background: #1e1e2e; +} +.mocha .hljs-keyword { + color: #cba6f7; +} +.mocha .hljs-built_in { + color: #f38ba8; +} +.mocha .hljs-type { + color: #f9e2af; +} +.mocha .hljs-literal { + color: #fab387; +} +.mocha .hljs-number { + color: #fab387; +} +.mocha .hljs-operator { + color: #94e2d5; +} +.mocha .hljs-punctuation { + color: #bac2de; +} +.mocha .hljs-property { + color: #94e2d5; +} +.mocha .hljs-regexp { + color: #f5c2e7; +} +.mocha .hljs-string { + color: #a6e3a1; +} +.mocha .hljs-char.escape_ { + color: #a6e3a1; +} +.mocha .hljs-subst { + color: #a6adc8; +} +.mocha .hljs-symbol { + color: #f2cdcd; +} +.mocha .hljs-variable { + color: #cba6f7; +} +.mocha .hljs-variable.language_ { + color: #cba6f7; +} +.mocha .hljs-variable.constant_ { + color: #fab387; +} +.mocha .hljs-title { + color: #89b4fa; +} +.mocha .hljs-title.class_ { + color: #f9e2af; +} +.mocha .hljs-title.function_ { + color: #89b4fa; +} +.mocha .hljs-params { + color: #cdd6f4; +} +.mocha .hljs-comment { + color: #585b70; +} +.mocha .hljs-doctag { + color: #f38ba8; +} +.mocha .hljs-meta { + color: #fab387; +} +.mocha .hljs-section { + color: #89b4fa; +} +.mocha .hljs-tag { + color: #a6adc8; +} +.mocha .hljs-name { + color: #cba6f7; +} +.mocha .hljs-attr { + color: #89b4fa; +} +.mocha .hljs-attribute { + color: #a6e3a1; +} +.mocha .hljs-bullet { + color: #94e2d5; +} +.mocha .hljs-code { + color: #a6e3a1; +} +.mocha .hljs-emphasis { + color: #f38ba8; + font-style: italic; +} +.mocha .hljs-strong { + color: #f38ba8; + font-weight: bold; +} +.mocha .hljs-formula { + color: #94e2d5; +} +.mocha .hljs-link { + color: #74c7ec; + font-style: italic; +} +.mocha .hljs-quote { + color: #a6e3a1; + font-style: italic; +} +.mocha .hljs-selector-tag { + color: #f9e2af; +} +.mocha .hljs-selector-id { + color: #89b4fa; +} +.mocha .hljs-selector-class { + color: #94e2d5; +} +.mocha .hljs-selector-attr { + color: #cba6f7; +} +.mocha .hljs-selector-pseudo { + color: #94e2d5; +} +.mocha .hljs-template-tag { + color: #f2cdcd; +} +.mocha .hljs-template-variable { + color: #f2cdcd; +} +.mocha .hljs-addition { + color: #a6e3a1; + background: rgba(166, 227, 161, 0.15); +} +.mocha .hljs-deletion { + color: #f38ba8; + background: rgba(243, 139, 168, 0.15); +} +.mocha code { + color: #cdd6f4; + background: #181825; +} +.mocha blockquote blockquote { + border-top: 0.1em solid #585b70; + border-bottom: 0.1em solid #585b70; +} +.mocha hr { + color: #585b70; +} +.mocha del { + color: #9399b2; +} +.mocha .ace_gutter { + color: #7f849c; + background: #181825; +} +.mocha .ace_gutter-active-line.ace_gutter-cell { + color: #f5c2e7; + background: #181825; +} + +.macchiato.hljs { + color: #cad3f5; + background: #24273a; +} +.macchiato .hljs-keyword { + color: #c6a0f6; +} +.macchiato .hljs-built_in { + color: #ed8796; +} +.macchiato .hljs-type { + color: #eed49f; +} +.macchiato .hljs-literal { + color: #f5a97f; +} +.macchiato .hljs-number { + color: #f5a97f; +} +.macchiato .hljs-operator { + color: #8bd5ca; +} +.macchiato .hljs-punctuation { + color: #b8c0e0; +} +.macchiato .hljs-property { + color: #8bd5ca; +} +.macchiato .hljs-regexp { + color: #f5bde6; +} +.macchiato .hljs-string { + color: #a6da95; +} +.macchiato .hljs-char.escape_ { + color: #a6da95; +} +.macchiato .hljs-subst { + color: #a5adcb; +} +.macchiato .hljs-symbol { + color: #f0c6c6; +} +.macchiato .hljs-variable { + color: #c6a0f6; +} +.macchiato .hljs-variable.language_ { + color: #c6a0f6; +} +.macchiato .hljs-variable.constant_ { + color: #f5a97f; +} +.macchiato .hljs-title { + color: #8aadf4; +} +.macchiato .hljs-title.class_ { + color: #eed49f; +} +.macchiato .hljs-title.function_ { + color: #8aadf4; +} +.macchiato .hljs-params { + color: #cad3f5; +} +.macchiato .hljs-comment { + color: #5b6078; +} +.macchiato .hljs-doctag { + color: #ed8796; +} +.macchiato .hljs-meta { + color: #f5a97f; +} +.macchiato .hljs-section { + color: #8aadf4; +} +.macchiato .hljs-tag { + color: #a5adcb; +} +.macchiato .hljs-name { + color: #c6a0f6; +} +.macchiato .hljs-attr { + color: #8aadf4; +} +.macchiato .hljs-attribute { + color: #a6da95; +} +.macchiato .hljs-bullet { + color: #8bd5ca; +} +.macchiato .hljs-code { + color: #a6da95; +} +.macchiato .hljs-emphasis { + color: #ed8796; + font-style: italic; +} +.macchiato .hljs-strong { + color: #ed8796; + font-weight: bold; +} +.macchiato .hljs-formula { + color: #8bd5ca; +} +.macchiato .hljs-link { + color: #7dc4e4; + font-style: italic; +} +.macchiato .hljs-quote { + color: #a6da95; + font-style: italic; +} +.macchiato .hljs-selector-tag { + color: #eed49f; +} +.macchiato .hljs-selector-id { + color: #8aadf4; +} +.macchiato .hljs-selector-class { + color: #8bd5ca; +} +.macchiato .hljs-selector-attr { + color: #c6a0f6; +} +.macchiato .hljs-selector-pseudo { + color: #8bd5ca; +} +.macchiato .hljs-template-tag { + color: #f0c6c6; +} +.macchiato .hljs-template-variable { + color: #f0c6c6; +} +.macchiato .hljs-addition { + color: #a6da95; + background: rgba(166, 218, 149, 0.15); +} +.macchiato .hljs-deletion { + color: #ed8796; + background: rgba(237, 135, 150, 0.15); +} +.macchiato code { + color: #cad3f5; + background: #1e2030; +} +.macchiato blockquote blockquote { + border-top: 0.1em solid #5b6078; + border-bottom: 0.1em solid #5b6078; +} +.macchiato hr { + color: #5b6078; +} +.macchiato del { + color: #939ab7; +} +.macchiato .ace_gutter { + color: #8087a2; + background: #1e2030; +} +.macchiato .ace_gutter-active-line.ace_gutter-cell { + color: #f5bde6; + background: #1e2030; +} + +.frappe.hljs { + color: #c6d0f5; + background: #303446; +} +.frappe .hljs-keyword { + color: #ca9ee6; +} +.frappe .hljs-built_in { + color: #e78284; +} +.frappe .hljs-type { + color: #e5c890; +} +.frappe .hljs-literal { + color: #ef9f76; +} +.frappe .hljs-number { + color: #ef9f76; +} +.frappe .hljs-operator { + color: #81c8be; +} +.frappe .hljs-punctuation { + color: #b5bfe2; +} +.frappe .hljs-property { + color: #81c8be; +} +.frappe .hljs-regexp { + color: #f4b8e4; +} +.frappe .hljs-string { + color: #a6d189; +} +.frappe .hljs-char.escape_ { + color: #a6d189; +} +.frappe .hljs-subst { + color: #a5adce; +} +.frappe .hljs-symbol { + color: #eebebe; +} +.frappe .hljs-variable { + color: #ca9ee6; +} +.frappe .hljs-variable.language_ { + color: #ca9ee6; +} +.frappe .hljs-variable.constant_ { + color: #ef9f76; +} +.frappe .hljs-title { + color: #8caaee; +} +.frappe .hljs-title.class_ { + color: #e5c890; +} +.frappe .hljs-title.function_ { + color: #8caaee; +} +.frappe .hljs-params { + color: #c6d0f5; +} +.frappe .hljs-comment { + color: #626880; +} +.frappe .hljs-doctag { + color: #e78284; +} +.frappe .hljs-meta { + color: #ef9f76; +} +.frappe .hljs-section { + color: #8caaee; +} +.frappe .hljs-tag { + color: #a5adce; +} +.frappe .hljs-name { + color: #ca9ee6; +} +.frappe .hljs-attr { + color: #8caaee; +} +.frappe .hljs-attribute { + color: #a6d189; +} +.frappe .hljs-bullet { + color: #81c8be; +} +.frappe .hljs-code { + color: #a6d189; +} +.frappe .hljs-emphasis { + color: #e78284; + font-style: italic; +} +.frappe .hljs-strong { + color: #e78284; + font-weight: bold; +} +.frappe .hljs-formula { + color: #81c8be; +} +.frappe .hljs-link { + color: #85c1dc; + font-style: italic; +} +.frappe .hljs-quote { + color: #a6d189; + font-style: italic; +} +.frappe .hljs-selector-tag { + color: #e5c890; +} +.frappe .hljs-selector-id { + color: #8caaee; +} +.frappe .hljs-selector-class { + color: #81c8be; +} +.frappe .hljs-selector-attr { + color: #ca9ee6; +} +.frappe .hljs-selector-pseudo { + color: #81c8be; +} +.frappe .hljs-template-tag { + color: #eebebe; +} +.frappe .hljs-template-variable { + color: #eebebe; +} +.frappe .hljs-addition { + color: #a6d189; + background: rgba(166, 209, 137, 0.15); +} +.frappe .hljs-deletion { + color: #e78284; + background: rgba(231, 130, 132, 0.15); +} +.frappe code { + color: #c6d0f5; + background: #292c3c; +} +.frappe blockquote blockquote { + border-top: 0.1em solid #626880; + border-bottom: 0.1em solid #626880; +} +.frappe hr { + color: #626880; +} +.frappe del { + color: #949cbb; +} +.frappe .ace_gutter { + color: #838ba7; + background: #292c3c; +} +.frappe .ace_gutter-active-line.ace_gutter-cell { + color: #f4b8e4; + background: #292c3c; +} + +.latte.hljs { + color: #4c4f69; + background: #eff1f5; +} +.latte .hljs-keyword { + color: #8839ef; +} +.latte .hljs-built_in { + color: #d20f39; +} +.latte .hljs-type { + color: #df8e1d; +} +.latte .hljs-literal { + color: #fe640b; +} +.latte .hljs-number { + color: #fe640b; +} +.latte .hljs-operator { + color: #179299; +} +.latte .hljs-punctuation { + color: #5c5f77; +} +.latte .hljs-property { + color: #179299; +} +.latte .hljs-regexp { + color: #ea76cb; +} +.latte .hljs-string { + color: #40a02b; +} +.latte .hljs-char.escape_ { + color: #40a02b; +} +.latte .hljs-subst { + color: #6c6f85; +} +.latte .hljs-symbol { + color: #dd7878; +} +.latte .hljs-variable { + color: #8839ef; +} +.latte .hljs-variable.language_ { + color: #8839ef; +} +.latte .hljs-variable.constant_ { + color: #fe640b; +} +.latte .hljs-title { + color: #1e66f5; +} +.latte .hljs-title.class_ { + color: #df8e1d; +} +.latte .hljs-title.function_ { + color: #1e66f5; +} +.latte .hljs-params { + color: #4c4f69; +} +.latte .hljs-comment { + color: #acb0be; +} +.latte .hljs-doctag { + color: #d20f39; +} +.latte .hljs-meta { + color: #fe640b; +} +.latte .hljs-section { + color: #1e66f5; +} +.latte .hljs-tag { + color: #6c6f85; +} +.latte .hljs-name { + color: #8839ef; +} +.latte .hljs-attr { + color: #1e66f5; +} +.latte .hljs-attribute { + color: #40a02b; +} +.latte .hljs-bullet { + color: #179299; +} +.latte .hljs-code { + color: #40a02b; +} +.latte .hljs-emphasis { + color: #d20f39; + font-style: italic; +} +.latte .hljs-strong { + color: #d20f39; + font-weight: bold; +} +.latte .hljs-formula { + color: #179299; +} +.latte .hljs-link { + color: #209fb5; + font-style: italic; +} +.latte .hljs-quote { + color: #40a02b; + font-style: italic; +} +.latte .hljs-selector-tag { + color: #df8e1d; +} +.latte .hljs-selector-id { + color: #1e66f5; +} +.latte .hljs-selector-class { + color: #179299; +} +.latte .hljs-selector-attr { + color: #8839ef; +} +.latte .hljs-selector-pseudo { + color: #179299; +} +.latte .hljs-template-tag { + color: #dd7878; +} +.latte .hljs-template-variable { + color: #dd7878; +} +.latte .hljs-addition { + color: #40a02b; + background: rgba(64, 160, 43, 0.15); +} +.latte .hljs-deletion { + color: #d20f39; + background: rgba(210, 15, 57, 0.15); +} +.latte code { + color: #4c4f69; + background: #e6e9ef; +} +.latte blockquote blockquote { + border-top: 0.1em solid #acb0be; + border-bottom: 0.1em solid #acb0be; +} +.latte hr { + color: #acb0be; +} +.latte del { + color: #7c7f93; +} +.latte .ace_gutter { + color: #8c8fa1; + background: #e6e9ef; +} +.latte .ace_gutter-active-line.ace_gutter-cell { + color: #ea76cb; + background: #e6e9ef; +} + +.mocha { + --bg: #1e1e2e; + --fg: #cdd6f4; + --sidebar-bg: #181825; + --sidebar-fg: #cdd6f4; + --sidebar-non-existant: #6c7086; + --sidebar-active: #89b4fa; + --sidebar-spacer: #6c7086; + --scrollbar: #6c7086; + --icons: #6c7086; + --icons-hover: #7f849c; + --links: #89b4fa; + --inline-code-color: #fab387; + --theme-popup-bg: #181825; + --theme-popup-border: #6c7086; + --theme-hover: #6c7086; + --quote-bg: #181825; + --quote-border: #11111b; + --table-border-color: #11111b; + --table-header-bg: #181825; + --table-alternate-bg: #181825; + --searchbar-border-color: #11111b; + --searchbar-bg: #181825; + --searchbar-fg: #cdd6f4; + --searchbar-shadow-color: #11111b; + --searchresults-header-fg: #cdd6f4; + --searchresults-border-color: #11111b; + --searchresults-li-bg: #1e1e2e; + --search-mark-bg: #fab387; + --warning-border: #fab387; +} + +.macchiato { + --bg: #24273a; + --fg: #cad3f5; + --sidebar-bg: #1e2030; + --sidebar-fg: #cad3f5; + --sidebar-non-existant: #6e738d; + --sidebar-active: #8aadf4; + --sidebar-spacer: #6e738d; + --scrollbar: #6e738d; + --icons: #6e738d; + --icons-hover: #8087a2; + --links: #8aadf4; + --inline-code-color: #f5a97f; + --theme-popup-bg: #1e2030; + --theme-popup-border: #6e738d; + --theme-hover: #6e738d; + --quote-bg: #1e2030; + --quote-border: #181926; + --table-border-color: #181926; + --table-header-bg: #1e2030; + --table-alternate-bg: #1e2030; + --searchbar-border-color: #181926; + --searchbar-bg: #1e2030; + --searchbar-fg: #cad3f5; + --searchbar-shadow-color: #181926; + --searchresults-header-fg: #cad3f5; + --searchresults-border-color: #181926; + --searchresults-li-bg: #24273a; + --search-mark-bg: #f5a97f; + --warning-border: #f5a97f; +} + +.frappe { + --bg: #303446; + --fg: #c6d0f5; + --sidebar-bg: #292c3c; + --sidebar-fg: #c6d0f5; + --sidebar-non-existant: #737994; + --sidebar-active: #8caaee; + --sidebar-spacer: #737994; + --scrollbar: #737994; + --icons: #737994; + --icons-hover: #838ba7; + --links: #8caaee; + --inline-code-color: #ef9f76; + --theme-popup-bg: #292c3c; + --theme-popup-border: #737994; + --theme-hover: #737994; + --quote-bg: #292c3c; + --quote-border: #232634; + --table-border-color: #232634; + --table-header-bg: #292c3c; + --table-alternate-bg: #292c3c; + --searchbar-border-color: #232634; + --searchbar-bg: #292c3c; + --searchbar-fg: #c6d0f5; + --searchbar-shadow-color: #232634; + --searchresults-header-fg: #c6d0f5; + --searchresults-border-color: #232634; + --searchresults-li-bg: #303446; + --search-mark-bg: #ef9f76; + --warning-border: #ef9f76; +} + +.latte { + --bg: #eff1f5; + --fg: #4c4f69; + --sidebar-bg: #e6e9ef; + --sidebar-fg: #4c4f69; + --sidebar-non-existant: #9ca0b0; + --sidebar-active: #1e66f5; + --sidebar-spacer: #9ca0b0; + --scrollbar: #9ca0b0; + --icons: #9ca0b0; + --icons-hover: #8c8fa1; + --links: #1e66f5; + --inline-code-color: #fe640b; + --theme-popup-bg: #e6e9ef; + --theme-popup-border: #9ca0b0; + --theme-hover: #9ca0b0; + --quote-bg: #e6e9ef; + --quote-border: #dce0e8; + --table-border-color: #dce0e8; + --table-header-bg: #e6e9ef; + --table-alternate-bg: #e6e9ef; + --searchbar-border-color: #dce0e8; + --searchbar-bg: #e6e9ef; + --searchbar-fg: #4c4f69; + --searchbar-shadow-color: #dce0e8; + --searchresults-header-fg: #4c4f69; + --searchresults-border-color: #dce0e8; + --searchresults-li-bg: #eff1f5; + --search-mark-bg: #fe640b; + --warning-border: #fe640b; +} + diff --git a/packages/bonfire-docs/theme/index.hbs b/packages/bonfire-docs/theme/index.hbs new file mode 100644 index 0000000..2b62f03 --- /dev/null +++ b/packages/bonfire-docs/theme/index.hbs @@ -0,0 +1,348 @@ + + + + + + {{ title }} + {{#if is_print }} + + {{/if}} + {{#if base_url}} + + {{/if}} + + + + {{> head}} + + + + + + {{#if favicon_svg}} + + {{/if}} + {{#if favicon_png}} + + {{/if}} + + + + {{#if print_enable}} + + {{/if}} + + + + {{#if copy_fonts}} + + {{/if}} + + + + + + + + {{#each additional_css}} + + {{/each}} + + {{#if mathjax_support}} + + + {{/if}} + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ {{> header}} + + + + {{#if search_enabled}} + + {{/if}} + + + + +
+
+ {{{ content }}} +
+ + +
+
+ + + +
+ + {{#if live_reload_endpoint}} + + + {{/if}} + + {{#if google_analytics}} + + + {{/if}} + + {{#if playground_line_numbers}} + + {{/if}} + + {{#if playground_copyable}} + + {{/if}} + + {{#if playground_js}} + + + + + + {{/if}} + + {{#if search_js}} + + + + {{/if}} + + + + + + + {{#each additional_js}} + + {{/each}} + + {{#if is_print}} + {{#if mathjax_support}} + + {{else}} + + {{/if}} + {{/if}} + +
+ + diff --git a/packages/default.nix b/packages/default.nix index dbefe40..718dce2 100644 --- a/packages/default.nix +++ b/packages/default.nix @@ -14,11 +14,13 @@ in forAllSystems(system: bonpkgs = self.packages.${system}; crane = self.inputs.crane; - crane-lib = self.inputs.crane.lib.${system}; + crane-lib = self.inputs.crane.mkLib pkgs; fenix = self.inputs.fenix; in { + bonfire-docs = pkgs.callPackage ./bonfire-docs { inherit bonfire; }; + netgen = pkgs.callPackage ./netgen { inherit bonfire; }; dearpygui = pkgs.callPackage ./dearpygui { inherit bonfire; }; @@ -37,3 +39,4 @@ in forAllSystems(system: nix-runner = pkgs.callPackage ./nix-runner { inherit bonpkgs bonlib; }; }) +# map (ps: (map (p: { name = p; systems = [ ps.${p}.system ]; type = if ps.${p}?imageTag then "image" else "package"; }) (builtins.attrNames ps))) (map (s: bf.packages.${s}) (builtins.attrNames bf.packages))