flake: fix name conventions flake: configurations -> lib.preconfiguredModules flake.packages: rework platform dependency with convient module and evaluator `lib.collectPackages` packages.bonfire-docs: convient evaluators `nixosModulesDoc` and `packagesDoc` new: packages.postgresql: container image new: packages.redis: container image remove: packages.lego: needed dns provider was added to lego and nixpkgs packages.netgen: broken
This commit is contained in:
parent
aced5139a1
commit
a4d8f5232e
@ -1,6 +1,6 @@
|
|||||||
<p align="center">
|
<p align="center">
|
||||||
<a href="https://github.com/L-Nafaryus/bonfire">
|
<a href="https://vcs.elnafo.ru/L-Nafaryus/bonfire">
|
||||||
<img src="https://raw.githubusercontent.com/L-Nafaryus/bonfire/master/etc/bonfire-logo.png" width="500px" alt="bonfire-logo"/>
|
<img src="https://vcs.elnafo.ru/L-Nafaryus/bonfire/raw/branch/master/packages/bonfire-docs/bonfire-logo.png" width="500px" alt="bonfire-logo"/>
|
||||||
</a>
|
</a>
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
|
@ -1,7 +0,0 @@
|
|||||||
{
|
|
||||||
self,
|
|
||||||
inputs,
|
|
||||||
...
|
|
||||||
}: {
|
|
||||||
bonvim = ./bonvim.nix;
|
|
||||||
}
|
|
99
flake.nix
99
flake.nix
@ -2,8 +2,14 @@
|
|||||||
description = "Derivation lit";
|
description = "Derivation lit";
|
||||||
|
|
||||||
nixConfig = {
|
nixConfig = {
|
||||||
extra-substituters = ["https://bonfire.cachix.org"];
|
extra-substituters = [
|
||||||
extra-trusted-public-keys = ["bonfire.cachix.org-1:mzAGBy/Crdf8NhKail5ciK7ZrGRbPJJobW6TwFb7WYM="];
|
"https://cache.elnafo.ru"
|
||||||
|
"https://bonfire.cachix.org"
|
||||||
|
];
|
||||||
|
extra-trusted-public-keys = [
|
||||||
|
"cache.elnafo.ru:j3VD+Hn+is2Qk3lPXDSdPwHJQSatizk7V82iJ2RP1yo="
|
||||||
|
"bonfire.cachix.org-1:mzAGBy/Crdf8NhKail5ciK7ZrGRbPJJobW6TwFb7WYM="
|
||||||
|
];
|
||||||
};
|
};
|
||||||
|
|
||||||
inputs = {
|
inputs = {
|
||||||
@ -48,67 +54,28 @@
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
outputs = {
|
outputs = {self, ...} @ inputs: let
|
||||||
self,
|
lib = inputs.nixpkgs.lib;
|
||||||
nixpkgs,
|
|
||||||
home-manager,
|
bonLib = import ./lib {inherit lib;};
|
||||||
nixos-mailserver,
|
bonModules = self.nixosModules;
|
||||||
sops-nix,
|
# no bonPkgs, it must be defined by appropriate system + skip a possible infinite recursion
|
||||||
crane,
|
|
||||||
fenix,
|
|
||||||
catppuccin,
|
|
||||||
oscuro,
|
|
||||||
...
|
|
||||||
} @ inputs: let
|
|
||||||
lib = import ./lib {inherit (nixpkgs) lib;};
|
|
||||||
in {
|
in {
|
||||||
inherit lib;
|
lib = bonLib;
|
||||||
|
|
||||||
nixosConfigurations = {
|
packages = import ./packages {inherit lib bonLib self inputs;};
|
||||||
astora = nixpkgs.lib.nixosSystem {
|
|
||||||
system = "x86_64-linux";
|
|
||||||
modules = [
|
|
||||||
home-manager.nixosModules.home-manager
|
|
||||||
./nixosConfigurations/astora
|
|
||||||
self.nixosModules.bonfire
|
|
||||||
self.nixosModules.spoofdpi
|
|
||||||
(import ./nixosModules {
|
|
||||||
lib = nixpkgs.lib;
|
|
||||||
self = self;
|
|
||||||
})
|
|
||||||
.configModule
|
|
||||||
];
|
|
||||||
specialArgs = {inherit self inputs;};
|
|
||||||
};
|
|
||||||
|
|
||||||
catarina = nixpkgs.lib.nixosSystem {
|
nixosModules = import ./nixosModules {
|
||||||
system = "x86_64-linux";
|
inherit lib bonLib self;
|
||||||
modules = [
|
check = false;
|
||||||
nixos-mailserver.nixosModules.mailserver
|
|
||||||
sops-nix.nixosModules.sops
|
|
||||||
oscuro.nixosModules.oscuro
|
|
||||||
./nixosConfigurations/catarina
|
|
||||||
self.nixosModules.bonfire
|
|
||||||
self.nixosModules.spoofdpi
|
|
||||||
self.nixosModules.papermc
|
|
||||||
self.nixosModules.qbittorrent-nox
|
|
||||||
(import ./nixosModules {
|
|
||||||
lib = nixpkgs.lib;
|
|
||||||
self = self;
|
|
||||||
})
|
|
||||||
.configModule
|
|
||||||
];
|
|
||||||
specialArgs = {inherit self;};
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
|
|
||||||
nixosModules =
|
nixosConfigurations = import ./nixosConfigurations {inherit lib inputs bonModules bonLib self;};
|
||||||
lib.importNamedModules
|
|
||||||
(import ./nixosModules {
|
hydraJobs = {
|
||||||
lib = nixpkgs.lib;
|
# filter broken packages ?
|
||||||
self = self;
|
packages = lib.filterAttrsRecursive (name: value: !bonLib.isBroken value) self.packages;
|
||||||
})
|
};
|
||||||
.modules;
|
|
||||||
|
|
||||||
templates = {
|
templates = {
|
||||||
rust = {
|
rust = {
|
||||||
@ -117,16 +84,14 @@
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
packages = import ./packages {inherit self inputs;};
|
apps = import ./apps {
|
||||||
|
inherit self;
|
||||||
|
inherit (inputs) nixpkgs;
|
||||||
|
};
|
||||||
|
|
||||||
apps = import ./apps {inherit self nixpkgs;};
|
devShells = import ./devShells {
|
||||||
|
inherit self;
|
||||||
devShells = import ./devShells {inherit self nixpkgs;};
|
inherit (inputs) nixpkgs;
|
||||||
|
|
||||||
configurations = import ./configurations {inherit self inputs;};
|
|
||||||
|
|
||||||
hydraJobs = {
|
|
||||||
inherit (self) packages;
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
@ -1,17 +1,97 @@
|
|||||||
{lib, ...}: rec {
|
{lib, ...}: rec {
|
||||||
maintainers = import ./maintainers.nix;
|
maintainers = import ./maintainers.nix;
|
||||||
|
|
||||||
moduleName = path:
|
nameFromPath = path:
|
||||||
if builtins.baseNameOf (toString path) == "default.nix"
|
if builtins.baseNameOf (toString path) == "default.nix"
|
||||||
then builtins.baseNameOf (lib.removeSuffix "/default.nix" (toString path))
|
then builtins.baseNameOf (lib.removeSuffix "/default.nix" (toString path))
|
||||||
else builtins.baseNameOf (lib.removeSuffix ".nix" (toString path));
|
else builtins.baseNameOf (lib.removeSuffix ".nix" (toString path));
|
||||||
|
|
||||||
moduleNames = pathList: map (path: moduleName path) pathList;
|
preconfiguredModules = lib.listToAttrs (map (path: {
|
||||||
|
name = nameFromPath path;
|
||||||
|
value = import path;
|
||||||
|
})
|
||||||
|
[
|
||||||
|
./preconfiguredModules/bonvim.nix
|
||||||
|
]);
|
||||||
|
|
||||||
importModules = pathList: map (path: import path) pathList;
|
isBroken = derivation: derivation ? meta && derivation.meta ? broken && derivation.meta.broken;
|
||||||
|
|
||||||
importNamedModules = pathList:
|
functionType = lib.types.mkOptionType {
|
||||||
lib.listToAttrs (
|
name = "function";
|
||||||
lib.zipListsWith (name: value: {inherit name value;}) (moduleNames pathList) (importModules pathList)
|
check = value: builtins.isFunction value;
|
||||||
);
|
};
|
||||||
|
|
||||||
|
platformType = lib.types.mkOptionType {
|
||||||
|
name = "platform";
|
||||||
|
check = value: builtins.isString value && lib.any (v: v == value) lib.platforms.all;
|
||||||
|
};
|
||||||
|
|
||||||
|
packageType = with lib;
|
||||||
|
types.submodule {
|
||||||
|
options = {
|
||||||
|
source = mkOption {
|
||||||
|
type = types.oneOf [types.path functionType];
|
||||||
|
description = "Path to file with expression to build derivation or expression";
|
||||||
|
};
|
||||||
|
platforms = mkOption {
|
||||||
|
type = types.listOf platformType;
|
||||||
|
description = "List of supported platforms";
|
||||||
|
};
|
||||||
|
builder = mkOption {
|
||||||
|
type = functionType;
|
||||||
|
description = "Function with platform specific inputs that call final build function";
|
||||||
|
example = "{pkgs, ...}: pkgs.callPackage";
|
||||||
|
};
|
||||||
|
extraArgs = mkOption {
|
||||||
|
type = types.attrs;
|
||||||
|
default = {};
|
||||||
|
description = "Extra arguments passed to builder inputs. Platform is not configured for this arguments";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
packagesModuleOptions = {...}:
|
||||||
|
with lib; {
|
||||||
|
options = {
|
||||||
|
packages = mkOption {
|
||||||
|
type = types.attrsOf packageType;
|
||||||
|
default = {};
|
||||||
|
description = "Set of defined packages";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
collectPackages = platformInputs: packagesAttrs: let
|
||||||
|
packages =
|
||||||
|
(lib.evalModules {
|
||||||
|
modules = [
|
||||||
|
packagesModuleOptions
|
||||||
|
({...}: {
|
||||||
|
packages = packagesAttrs;
|
||||||
|
})
|
||||||
|
];
|
||||||
|
})
|
||||||
|
.config
|
||||||
|
.packages;
|
||||||
|
packagesList = lib.attrsToList packages;
|
||||||
|
|
||||||
|
evaluateDerivation = system: name: package: let
|
||||||
|
platInputs =
|
||||||
|
if functionType.check platformInputs
|
||||||
|
then (platformInputs system) // package.extraArgs
|
||||||
|
else throw "`plaformInputs` must be a function: `system` -> {...}";
|
||||||
|
platformBuilder = package.builder platInputs;
|
||||||
|
derivation = platformBuilder package.source platInputs;
|
||||||
|
in {${name} = derivation;};
|
||||||
|
|
||||||
|
evaluatedPackages = map ({
|
||||||
|
name,
|
||||||
|
value,
|
||||||
|
}:
|
||||||
|
lib.genAttrs value.platforms (
|
||||||
|
system: evaluateDerivation system name value
|
||||||
|
))
|
||||||
|
packagesList;
|
||||||
|
in
|
||||||
|
lib.mapAttrs (name: value: lib.mergeAttrsList value) (lib.zipAttrs evaluatedPackages);
|
||||||
}
|
}
|
||||||
|
@ -14,8 +14,16 @@
|
|||||||
experimental-features = ["nix-command" "flakes" "repl-flake"];
|
experimental-features = ["nix-command" "flakes" "repl-flake"];
|
||||||
trusted-users = ["l-nafaryus"];
|
trusted-users = ["l-nafaryus"];
|
||||||
allowed-users = ["l-nafaryus"];
|
allowed-users = ["l-nafaryus"];
|
||||||
substituters = ["https://nix-community.cachix.org"];
|
substituters = [
|
||||||
trusted-public-keys = ["nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs="];
|
"https://cache.elnafo.ru"
|
||||||
|
"https://bonfire.cachix.org"
|
||||||
|
"https://nix-community.cachix.org"
|
||||||
|
];
|
||||||
|
trusted-public-keys = [
|
||||||
|
"cache.elnafo.ru:j3VD+Hn+is2Qk3lPXDSdPwHJQSatizk7V82iJ2RP1yo="
|
||||||
|
"bonfire.cachix.org-1:mzAGBy/Crdf8NhKail5ciK7ZrGRbPJJobW6TwFb7WYM="
|
||||||
|
"nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs="
|
||||||
|
];
|
||||||
auto-optimise-store = true;
|
auto-optimise-store = true;
|
||||||
};
|
};
|
||||||
gc = {
|
gc = {
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
config,
|
config,
|
||||||
pkgs,
|
pkgs,
|
||||||
lib,
|
lib,
|
||||||
self,
|
bonPkgs,
|
||||||
inputs,
|
inputs,
|
||||||
...
|
...
|
||||||
}: {
|
}: {
|
||||||
@ -83,6 +83,8 @@
|
|||||||
gxplugins-lv2
|
gxplugins-lv2
|
||||||
xtuner
|
xtuner
|
||||||
aether-lv2
|
aether-lv2
|
||||||
|
aeolus
|
||||||
|
grandorgue
|
||||||
|
|
||||||
qbittorrent
|
qbittorrent
|
||||||
transmission_3-qt
|
transmission_3-qt
|
||||||
@ -91,7 +93,7 @@
|
|||||||
onlyoffice-bin
|
onlyoffice-bin
|
||||||
|
|
||||||
jdk
|
jdk
|
||||||
self.packages.${pkgs.system}.ultimmc
|
bonPkgs.ultimmc
|
||||||
|
|
||||||
liberation_ttf
|
liberation_ttf
|
||||||
|
|
||||||
@ -120,7 +122,7 @@
|
|||||||
wl-clipboard
|
wl-clipboard
|
||||||
cliphist
|
cliphist
|
||||||
tree
|
tree
|
||||||
self.packages.${pkgs.system}.bonvim
|
bonPkgs.bonvim
|
||||||
];
|
];
|
||||||
|
|
||||||
xdg.portal = {
|
xdg.portal = {
|
||||||
|
@ -2,11 +2,9 @@
|
|||||||
config,
|
config,
|
||||||
pkgs,
|
pkgs,
|
||||||
lib,
|
lib,
|
||||||
self,
|
bonPkgs,
|
||||||
...
|
...
|
||||||
}: let
|
}: {
|
||||||
bonfire-pkgs = self.packages.${pkgs.system};
|
|
||||||
in {
|
|
||||||
system.stateVersion = "23.11";
|
system.stateVersion = "23.11";
|
||||||
|
|
||||||
imports = [
|
imports = [
|
||||||
@ -23,10 +21,12 @@ in {
|
|||||||
trusted-users = ["l-nafaryus"];
|
trusted-users = ["l-nafaryus"];
|
||||||
allowed-users = ["l-nafaryus" "hydra" "hydra-www"];
|
allowed-users = ["l-nafaryus" "hydra" "hydra-www"];
|
||||||
substituters = [
|
substituters = [
|
||||||
|
"https://cache.elnafo.ru"
|
||||||
"https://bonfire.cachix.org"
|
"https://bonfire.cachix.org"
|
||||||
"https://nix-community.cachix.org"
|
"https://nix-community.cachix.org"
|
||||||
];
|
];
|
||||||
trusted-public-keys = [
|
trusted-public-keys = [
|
||||||
|
"cache.elnafo.ru:j3VD+Hn+is2Qk3lPXDSdPwHJQSatizk7V82iJ2RP1yo="
|
||||||
"bonfire.cachix.org-1:mzAGBy/Crdf8NhKail5ciK7ZrGRbPJJobW6TwFb7WYM="
|
"bonfire.cachix.org-1:mzAGBy/Crdf8NhKail5ciK7ZrGRbPJJobW6TwFb7WYM="
|
||||||
"nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs="
|
"nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs="
|
||||||
];
|
];
|
||||||
@ -139,7 +139,7 @@ in {
|
|||||||
"bonfire.elnafo.ru" = {
|
"bonfire.elnafo.ru" = {
|
||||||
forceSSL = true;
|
forceSSL = true;
|
||||||
useACMEHost = "elnafo.ru";
|
useACMEHost = "elnafo.ru";
|
||||||
locations."/".root = "${bonfire-pkgs.bonfire-docs}";
|
locations."/".root = "${bonPkgs.bonfire-docs}";
|
||||||
};
|
};
|
||||||
|
|
||||||
"hydra.elnafo.ru" = {
|
"hydra.elnafo.ru" = {
|
||||||
|
@ -1,7 +1,6 @@
|
|||||||
{
|
{
|
||||||
config,
|
config,
|
||||||
pkgs,
|
pkgs,
|
||||||
lib,
|
|
||||||
...
|
...
|
||||||
}: {
|
}: {
|
||||||
# Users
|
# Users
|
||||||
|
33
nixosConfigurations/default.nix
Normal file
33
nixosConfigurations/default.nix
Normal file
@ -0,0 +1,33 @@
|
|||||||
|
{
|
||||||
|
lib,
|
||||||
|
inputs,
|
||||||
|
bonModules,
|
||||||
|
bonLib,
|
||||||
|
self,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
|
astora = lib.nixosSystem {
|
||||||
|
system = "x86_64-linux";
|
||||||
|
modules = with inputs; [
|
||||||
|
home-manager.nixosModules.home-manager
|
||||||
|
bonModules.bonfire
|
||||||
|
./astora
|
||||||
|
];
|
||||||
|
specialArgs = {
|
||||||
|
inherit inputs;
|
||||||
|
bonPkgs = self.packages.x86_64-linux;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
catarina = lib.nixosSystem {
|
||||||
|
system = "x86_64-linux";
|
||||||
|
modules = with inputs; [
|
||||||
|
nixos-mailserver.nixosModules.mailserver
|
||||||
|
sops-nix.nixosModules.sops
|
||||||
|
oscuro.nixosModules.oscuro
|
||||||
|
bonModules.bonfire
|
||||||
|
./catarina
|
||||||
|
];
|
||||||
|
specialArgs = {bonPkgs = self.packages.x86_64-linux;};
|
||||||
|
};
|
||||||
|
}
|
@ -1,10 +1,11 @@
|
|||||||
{
|
{
|
||||||
lib,
|
lib,
|
||||||
check ? true,
|
bonLib,
|
||||||
self,
|
self,
|
||||||
|
check ? true,
|
||||||
...
|
...
|
||||||
}: rec {
|
}: let
|
||||||
modules = [
|
moduleList = [
|
||||||
./misc/bonfire/default.nix
|
./misc/bonfire/default.nix
|
||||||
./services/papermc.nix
|
./services/papermc.nix
|
||||||
./services/qbittorrent-nox.nix
|
./services/qbittorrent-nox.nix
|
||||||
@ -17,11 +18,38 @@
|
|||||||
...
|
...
|
||||||
}: {
|
}: {
|
||||||
config = {
|
config = {
|
||||||
# Module type checking
|
# module type checking
|
||||||
_module.check = check;
|
_module.check = check;
|
||||||
#_module.args.baseModules = modules;
|
# extra arguments
|
||||||
#_module.args.pkgs = lib.mkDefault pkgs;
|
_module.args = {
|
||||||
_module.args.bonpkgs = self.packages.${pkgs.system};
|
bonPkgs = self.packages.${pkgs.system};
|
||||||
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
}
|
|
||||||
|
importedModules =
|
||||||
|
map (path: {...}: {
|
||||||
|
# imports provide path for each module needed for documentation
|
||||||
|
# inject module configuration
|
||||||
|
imports = [path configModule];
|
||||||
|
})
|
||||||
|
moduleList;
|
||||||
|
|
||||||
|
importedModuleNames = map (path: bonLib.nameFromPath path) moduleList;
|
||||||
|
|
||||||
|
bonfireModule = {
|
||||||
|
config,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
|
# collect all modules
|
||||||
|
imports = importedModules;
|
||||||
|
};
|
||||||
|
in
|
||||||
|
lib.listToAttrs (
|
||||||
|
lib.zipListsWith (name: value: {inherit name value;}) importedModuleNames importedModules
|
||||||
|
)
|
||||||
|
// {
|
||||||
|
bonfire = bonfireModule;
|
||||||
|
default = bonfireModule;
|
||||||
|
}
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
config,
|
config,
|
||||||
lib,
|
lib,
|
||||||
bonpkgs,
|
bonPkgs,
|
||||||
...
|
...
|
||||||
}:
|
}:
|
||||||
with lib; let
|
with lib; let
|
||||||
@ -12,8 +12,8 @@ in {
|
|||||||
|
|
||||||
package = mkOption {
|
package = mkOption {
|
||||||
type = types.package;
|
type = types.package;
|
||||||
default = bonpkgs.spoofdpi;
|
default = bonPkgs.spoofdpi;
|
||||||
defaultText = literalExpression "bonpkgs.spoofdpi";
|
defaultText = literalExpression "bonPkgs.spoofdpi";
|
||||||
description = "The package to use.";
|
description = "The package to use.";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
Before Width: | Height: | Size: 58 KiB After Width: | Height: | Size: 58 KiB |
@ -14,3 +14,4 @@ no-section-label = true
|
|||||||
git-repository-url = "https://vcs.elnafo.ru/L-Nafaryus/bonfire"
|
git-repository-url = "https://vcs.elnafo.ru/L-Nafaryus/bonfire"
|
||||||
git-repository-icon = "fa-git"
|
git-repository-icon = "fa-git"
|
||||||
cname = "elnafo.ru"
|
cname = "elnafo.ru"
|
||||||
|
fold.enable = true
|
||||||
|
@ -1,150 +1,39 @@
|
|||||||
{
|
{
|
||||||
bonfire,
|
bonLib,
|
||||||
|
bonModules,
|
||||||
|
self,
|
||||||
lib,
|
lib,
|
||||||
pkgs,
|
pkgs,
|
||||||
...
|
...
|
||||||
}: let
|
}: let
|
||||||
version = bonfire.shortRev or bonfire.dirtyShortRev or "unknown";
|
version = "unknown";
|
||||||
projectPath = ../../.;
|
|
||||||
modulesPath = ../../nixosModules;
|
|
||||||
|
|
||||||
links = [
|
nixosModulesDoc = import ./nixosModulesDoc.nix {
|
||||||
{
|
inherit lib pkgs version;
|
||||||
hostname = "vcs-elnafo";
|
|
||||||
url = "https://vcs.elnafo.ru/L-Nafaryus/bonfire/src/branch/master";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
hostname = "github";
|
|
||||||
url = "https://github.com/L-Nafaryus/bonfire/blob/master";
|
|
||||||
}
|
|
||||||
];
|
|
||||||
|
|
||||||
formatDeclaration = declaration:
|
modules = bonModules;
|
||||||
if lib.hasPrefix (toString modulesPath) (toString declaration)
|
root = ../../.;
|
||||||
then let
|
declarations = [
|
||||||
subpath = lib.removePrefix (toString projectPath + "/") (toString declaration);
|
{
|
||||||
in
|
name = "elnafo-vcs";
|
||||||
map ({
|
url = "https://vcs.elnafo.ru/L-Nafaryus/bonfire/src/branch/master";
|
||||||
hostname,
|
}
|
||||||
url,
|
{
|
||||||
}: {
|
name = "github";
|
||||||
url = "${url}/${subpath}";
|
url = "https://github.com/L-Nafaryus/bonfire/blob/master";
|
||||||
name = "<${hostname}:bonfire/${subpath}>";
|
}
|
||||||
})
|
|
||||||
links
|
|
||||||
else
|
|
||||||
# skip external declarations
|
|
||||||
lib.singleton declaration;
|
|
||||||
|
|
||||||
nixosModules = import modulesPath {
|
|
||||||
inherit lib;
|
|
||||||
self = bonfire;
|
|
||||||
check = false;
|
|
||||||
};
|
|
||||||
|
|
||||||
evaluatedModules = lib.evalModules {
|
|
||||||
modules = nixosModules.modules ++ [nixosModules.configModule];
|
|
||||||
};
|
|
||||||
|
|
||||||
optionsDoc = pkgs.nixosOptionsDoc {
|
|
||||||
options = builtins.removeAttrs evaluatedModules.options [
|
|
||||||
"_module"
|
|
||||||
"system"
|
|
||||||
];
|
];
|
||||||
|
projectName = "bonfire";
|
||||||
transformOptions = option:
|
modulesPrefix = ../../nixosModules;
|
||||||
option
|
|
||||||
// {
|
|
||||||
declarations = lib.unique (
|
|
||||||
lib.flatten (map (declaration: formatDeclaration declaration) option.declarations)
|
|
||||||
++ option.declarations
|
|
||||||
);
|
|
||||||
};
|
|
||||||
documentType = "none";
|
|
||||||
revision = version;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
systems = builtins.attrNames bonfire.packages;
|
packagesDoc = import ./packagesDoc.nix {
|
||||||
derivations = lib.flatten (
|
inherit lib pkgs;
|
||||||
map (packages: (
|
|
||||||
map (name: packages.${name}) (builtins.attrNames packages)
|
|
||||||
)) (map (system: bonfire.packages.${system}) systems)
|
|
||||||
);
|
|
||||||
|
|
||||||
renderMaintainers = maintainers:
|
packages = self.packages;
|
||||||
lib.concatStringsSep ", " (
|
repoUrl = "https://vcs.elnafo.ru/L-Nafaryus/bonfire/src/branch/master";
|
||||||
let
|
hydraUrl = "https://hydra.elnafo.ru/job/bonfire/master";
|
||||||
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 if drv ? pname
|
|
||||||
then renderPackage drv
|
|
||||||
else "")
|
|
||||||
derivations));
|
|
||||||
in
|
in
|
||||||
pkgs.stdenvNoCC.mkDerivation {
|
pkgs.stdenvNoCC.mkDerivation {
|
||||||
pname = "bonfire-docs";
|
pname = "bonfire-docs";
|
||||||
@ -166,9 +55,15 @@ in
|
|||||||
|
|
||||||
buildPhase = ''
|
buildPhase = ''
|
||||||
runHook preBuild
|
runHook preBuild
|
||||||
|
|
||||||
ln -s ${../../README.md} src/README.md
|
ln -s ${../../README.md} src/README.md
|
||||||
ln -s ${optionsDoc.optionsCommonMark} src/options/modules.md
|
|
||||||
ln -s ${packagesDoc} src/packages/packages.md
|
${lib.concatStringsSep "\n" (map (module_: "ln -s ${module_.commonMarkdown} src/nixosModules/${module_.name}.md") nixosModulesDoc.documentation)}
|
||||||
|
substituteInPlace src/SUMMARY.md --replace '{{nixosModulesSummary}}' '${lib.concatStringsSep "\n" nixosModulesDoc.summary}'
|
||||||
|
|
||||||
|
${lib.concatStringsSep "\n" (map (package_: "ln -s ${package_.commonMarkdown} src/packages/${package_.name}.md") packagesDoc.documentation)}
|
||||||
|
substituteInPlace src/SUMMARY.md --replace '{{packagesSummary}}' '${lib.concatStringsSep "\n" packagesDoc.summary}'
|
||||||
|
|
||||||
mdbook build
|
mdbook build
|
||||||
runHook postBuild
|
runHook postBuild
|
||||||
'';
|
'';
|
||||||
@ -188,9 +83,9 @@ in
|
|||||||
};
|
};
|
||||||
|
|
||||||
meta = with lib; {
|
meta = with lib; {
|
||||||
description = "Bonfire HTML documentation.";
|
description = "Bonfire documentation.";
|
||||||
license = licenses.mit;
|
license = licenses.mit;
|
||||||
maintainers = with bonfire.lib.maintainers; [L-Nafaryus];
|
maintainers = with bonLib.maintainers; [L-Nafaryus];
|
||||||
platforms = lib.platforms.all;
|
platforms = lib.platforms.all;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
64
packages/bonfire-docs/nixosModulesDoc.nix
Normal file
64
packages/bonfire-docs/nixosModulesDoc.nix
Normal file
@ -0,0 +1,64 @@
|
|||||||
|
{
|
||||||
|
lib,
|
||||||
|
pkgs,
|
||||||
|
modules,
|
||||||
|
excludedModules ? ["default"],
|
||||||
|
root ? null,
|
||||||
|
declarations ? {},
|
||||||
|
projectName ? "",
|
||||||
|
modulesPrefix ? "",
|
||||||
|
version ? "unknown",
|
||||||
|
}: let
|
||||||
|
moduleNames = lib.filter (key: builtins.all (restricted: key != restricted) excludedModules) (lib.attrNames modules);
|
||||||
|
moduleValues = map (key: modules.${key}) moduleNames;
|
||||||
|
|
||||||
|
genDeclaration = storeDeclaration: declarations:
|
||||||
|
map (declaration: let
|
||||||
|
subpath = lib.removePrefix (toString root + "/") (toString storeDeclaration);
|
||||||
|
project =
|
||||||
|
if projectName != ""
|
||||||
|
then "${projectName}/"
|
||||||
|
else "";
|
||||||
|
in {
|
||||||
|
name = "<${declaration.name}:${project}${subpath}>";
|
||||||
|
url = "${declaration.url}/${subpath}";
|
||||||
|
})
|
||||||
|
declarations;
|
||||||
|
|
||||||
|
formatDeclaration = storeDeclaration:
|
||||||
|
if lib.hasPrefix (toString modulesPrefix) (toString storeDeclaration)
|
||||||
|
then genDeclaration storeDeclaration declarations
|
||||||
|
# skip external declarations
|
||||||
|
else lib.singleton storeDeclaration;
|
||||||
|
|
||||||
|
transformOptions = option:
|
||||||
|
option
|
||||||
|
// {
|
||||||
|
declarations = lib.unique (
|
||||||
|
lib.flatten (map (declaration: formatDeclaration declaration) option.declarations)
|
||||||
|
++ option.declarations
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
|
genDocumentation = module:
|
||||||
|
pkgs.nixosOptionsDoc {
|
||||||
|
options = builtins.removeAttrs (lib.evalModules {modules = [module];}).options [
|
||||||
|
"_module"
|
||||||
|
"system"
|
||||||
|
];
|
||||||
|
|
||||||
|
transformOptions = transformOptions;
|
||||||
|
documentType = "none";
|
||||||
|
revision = version;
|
||||||
|
};
|
||||||
|
in {
|
||||||
|
documentation =
|
||||||
|
lib.zipListsWith (name: moduleDocumentation: {
|
||||||
|
name = name;
|
||||||
|
commonMarkdown = moduleDocumentation.optionsCommonMark;
|
||||||
|
})
|
||||||
|
moduleNames
|
||||||
|
(map (module: genDocumentation module) moduleValues);
|
||||||
|
|
||||||
|
summary = map (name: " - [${name}](nixosModules/${name}.md)") moduleNames;
|
||||||
|
}
|
137
packages/bonfire-docs/packagesDoc.nix
Normal file
137
packages/bonfire-docs/packagesDoc.nix
Normal file
@ -0,0 +1,137 @@
|
|||||||
|
{
|
||||||
|
lib,
|
||||||
|
pkgs,
|
||||||
|
packages,
|
||||||
|
excludedPackages ? ["default"],
|
||||||
|
repoUrl ? null,
|
||||||
|
hydraUrl ? null,
|
||||||
|
}: let
|
||||||
|
supportedSystems = builtins.attrNames packages;
|
||||||
|
|
||||||
|
derivations = lib.flatten (
|
||||||
|
map (packages_: (
|
||||||
|
map (name: packages_.${name}) (builtins.attrNames packages_)
|
||||||
|
)) (map (system: packages.${system}) supportedSystems)
|
||||||
|
);
|
||||||
|
|
||||||
|
extractName = drv:
|
||||||
|
if drv ? pname
|
||||||
|
then drv.pname
|
||||||
|
else if drv ? imageName
|
||||||
|
then drv.imageName
|
||||||
|
else "unknown";
|
||||||
|
|
||||||
|
derivationNames = map (drv: extractName drv) derivations;
|
||||||
|
|
||||||
|
genDocumentation = drv: let
|
||||||
|
name = extractName drv;
|
||||||
|
|
||||||
|
type =
|
||||||
|
if drv ? pname
|
||||||
|
then "package"
|
||||||
|
else if drv ? imageTag
|
||||||
|
then "image"
|
||||||
|
else "unknown";
|
||||||
|
|
||||||
|
description = lib.optionalString (drv.meta ? description) drv.meta.description;
|
||||||
|
homepage = lib.optionalString (drv.meta ? homepage) "[Homepage](${drv.meta.homepage})";
|
||||||
|
source = lib.optionalString (repoUrl != null) "[Source](${repoUrl}/packages/${name}/default.nix)";
|
||||||
|
|
||||||
|
versionOrTag =
|
||||||
|
if type == "package"
|
||||||
|
then "Version: __${drv.version}__"
|
||||||
|
else if type == "image"
|
||||||
|
then "Tag: __${drv.imageTag}__"
|
||||||
|
else "";
|
||||||
|
|
||||||
|
license = 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})"
|
||||||
|
}";
|
||||||
|
|
||||||
|
maintainers = 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
|
||||||
|
lib.optionalString (drv.meta ? maintainers) ("Maintainers: "
|
||||||
|
+ lib.concatStringsSep ", " (
|
||||||
|
map (mt: maintainer mt + email mt) drv.meta.maintainers
|
||||||
|
));
|
||||||
|
|
||||||
|
platforms = lib.optionalString (drv.meta ? platforms && drv.meta.platforms != lib.platforms.none) (
|
||||||
|
let
|
||||||
|
# limit package platforms to supported by flake only
|
||||||
|
filteredPlatforms = lib.intersectLists drv.meta.platforms supportedSystems;
|
||||||
|
in
|
||||||
|
"Platforms: "
|
||||||
|
+ lib.concatStringsSep ", " (map (platform:
|
||||||
|
if hydraUrl != null
|
||||||
|
then "[${platform}](${hydraUrl}/packages.${platform}.${name})"
|
||||||
|
else "__${platform}__")
|
||||||
|
filteredPlatforms)
|
||||||
|
);
|
||||||
|
|
||||||
|
mainProgram = lib.optionalString (drv.meta ? mainProgram) "Main program: __${drv.meta.mainProgram}__";
|
||||||
|
|
||||||
|
outputs = lib.optionalString (drv ? outputs) ("Outputs: " + lib.concatStringsSep ", " (map (o: "__${o}__") drv.outputs));
|
||||||
|
|
||||||
|
fromImage = lib.optionalString (drv ? fromImage && drv.fromImage != null) "From: __${drv.fromImage.imageName}__";
|
||||||
|
|
||||||
|
stats = let
|
||||||
|
stats_ = [
|
||||||
|
(lib.optionalString
|
||||||
|
(drv.meta ? broken && drv.meta.broken)
|
||||||
|
" _broken_")
|
||||||
|
(lib.optionalString
|
||||||
|
(drv.meta ? unfree && drv.meta.unfree)
|
||||||
|
" _unfree_")
|
||||||
|
(lib.optionalString
|
||||||
|
(drv.meta ? unsupported && drv.meta.unsupported)
|
||||||
|
" _unsupported_")
|
||||||
|
(lib.optionalString
|
||||||
|
(drv.meta ? insecure && drv.meta.insecure)
|
||||||
|
" _insecure_")
|
||||||
|
];
|
||||||
|
in
|
||||||
|
lib.optionalString (builtins.any (s: s == true) stats_) "[ ${lib.concatStringsSep "," stats_} ]";
|
||||||
|
in {
|
||||||
|
commonMarkdown = pkgs.writeText "meta.md" ''
|
||||||
|
## ${name}
|
||||||
|
|
||||||
|
${stats}
|
||||||
|
|
||||||
|
${description}
|
||||||
|
|
||||||
|
${source} ${lib.optionalString (homepage != "") "| ${homepage}"}
|
||||||
|
|
||||||
|
${versionOrTag} ${fromImage}
|
||||||
|
|
||||||
|
${mainProgram}
|
||||||
|
|
||||||
|
${outputs}
|
||||||
|
|
||||||
|
${license}
|
||||||
|
|
||||||
|
${maintainers}
|
||||||
|
|
||||||
|
${platforms}
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
in {
|
||||||
|
documentation =
|
||||||
|
lib.zipListsWith (name: packageDocumentation: {
|
||||||
|
name = name;
|
||||||
|
commonMarkdown = packageDocumentation.commonMarkdown;
|
||||||
|
})
|
||||||
|
derivationNames
|
||||||
|
(map (drv: genDocumentation drv) derivations);
|
||||||
|
|
||||||
|
summary = map (name: " - [${name}](packages/${name}.md)") derivationNames;
|
||||||
|
}
|
@ -2,13 +2,17 @@
|
|||||||
|
|
||||||
[Introduction](README.md)
|
[Introduction](README.md)
|
||||||
|
|
||||||
|
# Outputs
|
||||||
|
|
||||||
- [Packages](packages/README.md)
|
- [Packages](packages/README.md)
|
||||||
- [packages](packages/packages.md)
|
{{packagesSummary}}
|
||||||
|
|
||||||
- [Module options](options/README.md)
|
- [NixOS Modules](nixosModules/README.md)
|
||||||
- [nixosModules](options/modules.md)
|
{{nixosModulesSummary}}
|
||||||
|
|
||||||
- [FAQ](faq.md)
|
# Trivia
|
||||||
|
|
||||||
|
- [Side Notes](notes.md)
|
||||||
|
|
||||||
- [Contributing](contributing.md)
|
- [Contributing](contributing.md)
|
||||||
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
# Module options
|
# NixOS modules
|
||||||
|
|
||||||
First, you need to add this project to your flake inputs:
|
First, you need to add this project to your flake inputs:
|
||||||
|
|
||||||
@ -21,6 +21,10 @@ After, you can use in a NixOS configuration like so
|
|||||||
system = "x86_64-linux";
|
system = "x86_64-linux";
|
||||||
modules = [
|
modules = [
|
||||||
bonfire.nixosModules.bonfire
|
bonfire.nixosModules.bonfire
|
||||||
|
# or default because bonfire is default module
|
||||||
|
bonfire.nixosModules.default
|
||||||
|
# or just standalone module
|
||||||
|
bonfire.nixosModules.bar
|
||||||
...
|
...
|
||||||
];
|
];
|
||||||
};
|
};
|
@ -1,4 +1,4 @@
|
|||||||
# Frequently asked questions and hints
|
# Side Notes
|
||||||
|
|
||||||
* How to update and push flake inputs:
|
* How to update and push flake inputs:
|
||||||
|
|
@ -0,0 +1,36 @@
|
|||||||
|
# Packages
|
||||||
|
|
||||||
|
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";
|
||||||
|
specialArgs = { bonPkgs = bonfire.packages.x86_64-linux; };
|
||||||
|
modules = [
|
||||||
|
{ pkgs, bonPkgs, ... }: {
|
||||||
|
environment.systemPackages = [
|
||||||
|
pkgs.bar
|
||||||
|
bonPkgs.baz
|
||||||
|
];
|
||||||
|
}
|
||||||
|
...
|
||||||
|
];
|
||||||
|
};
|
||||||
|
# or pass in your devShells, nixosModules, etc
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
@ -1,16 +1,31 @@
|
|||||||
{
|
{
|
||||||
pkgs,
|
pkgs,
|
||||||
nixvim-pkgs,
|
nixvimPkgs,
|
||||||
bonconfigs,
|
fenixPkgs,
|
||||||
fenix-pkgs,
|
bonLib,
|
||||||
|
lib,
|
||||||
...
|
...
|
||||||
}:
|
}: let
|
||||||
nixvim-pkgs.makeNixvimWithModule {
|
drv = nixvimPkgs.makeNixvimWithModule {
|
||||||
pkgs = pkgs;
|
pkgs = pkgs;
|
||||||
module = import bonconfigs.bonvim;
|
module = bonLib.preconfiguredModules.bonvim;
|
||||||
extraSpecialArgs = {
|
extraSpecialArgs = {
|
||||||
rustc = fenix-pkgs.complete.rustc;
|
rustc = fenixPkgs.complete.rustc;
|
||||||
cargo = fenix-pkgs.complete.cargo;
|
cargo = fenixPkgs.complete.cargo;
|
||||||
rust-analyzer = fenix-pkgs.complete.rust-analyzer;
|
rust-analyzer = fenixPkgs.complete.rust-analyzer;
|
||||||
|
};
|
||||||
};
|
};
|
||||||
}
|
in
|
||||||
|
drv
|
||||||
|
// {
|
||||||
|
pname = "bonvim";
|
||||||
|
version = "unknown";
|
||||||
|
meta = with lib;
|
||||||
|
drv.meta
|
||||||
|
// {
|
||||||
|
description = "NixVim distribution for NeoVim with a customized collection of plugins inspired by the LazyVim distribution.";
|
||||||
|
license = licenses.mit;
|
||||||
|
maintainers = with bonLib.maintainers; [L-Nafaryus];
|
||||||
|
platforms = platforms.linux;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
bonfire,
|
bonLib,
|
||||||
crane-lib,
|
craneLib,
|
||||||
lib,
|
lib,
|
||||||
pkgs,
|
pkgs,
|
||||||
version ? "v0.44.0",
|
version ? "v0.44.0",
|
||||||
@ -34,12 +34,13 @@
|
|||||||
description = "A cargo command for the shuttle platform";
|
description = "A cargo command for the shuttle platform";
|
||||||
license = licenses.asl20;
|
license = licenses.asl20;
|
||||||
homepage = "https://shuttle.rs/";
|
homepage = "https://shuttle.rs/";
|
||||||
maintainers = with bonfire.lib.maintainers; [L-Nafaryus];
|
maintainers = with bonLib.maintainers; [L-Nafaryus];
|
||||||
|
platforms = platforms.x86_64;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
in let
|
in let
|
||||||
cargoArtifacts = crane-lib.buildDepsOnly pkg;
|
cargoArtifacts = craneLib.buildDepsOnly pkg;
|
||||||
in
|
in
|
||||||
crane-lib.buildPackage (
|
craneLib.buildPackage (
|
||||||
pkg // {inherit cargoArtifacts;}
|
pkg // {inherit cargoArtifacts;}
|
||||||
)
|
)
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
{
|
{
|
||||||
bonfire,
|
bonLib,
|
||||||
stdenv,
|
stdenv,
|
||||||
lib,
|
lib,
|
||||||
pkgs,
|
pkgs,
|
||||||
@ -58,7 +58,7 @@ pkgs.python3.pkgs.buildPythonPackage {
|
|||||||
description = "Dear PyGui: A fast and powerful Graphical User Interface Toolkit for Python with minimal dependencies.";
|
description = "Dear PyGui: A fast and powerful Graphical User Interface Toolkit for Python with minimal dependencies.";
|
||||||
license = licenses.mit;
|
license = licenses.mit;
|
||||||
platforms = platforms.linux;
|
platforms = platforms.linux;
|
||||||
maintainers = with bonfire.lib.maintainers; [L-Nafaryus];
|
maintainers = with bonLib.maintainers; [L-Nafaryus];
|
||||||
broken = pkgs.stdenv.isDarwin;
|
broken = pkgs.stdenv.isDarwin;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
@ -1,48 +1,98 @@
|
|||||||
# self.packages.${system}
|
# self.packages.${system}
|
||||||
#
|
#
|
||||||
{
|
{
|
||||||
|
lib,
|
||||||
|
bonLib,
|
||||||
self,
|
self,
|
||||||
inputs,
|
inputs,
|
||||||
...
|
...
|
||||||
}: let
|
}: let
|
||||||
forAllSystems = inputs.nixpkgs.lib.genAttrs ["x86_64-linux"];
|
platformInputs = system: rec {
|
||||||
nixpkgsFor = forAllSystems (system: import inputs.nixpkgs {inherit system;});
|
pkgs = inputs.nixpkgs.legacyPackages.${system};
|
||||||
|
lib = pkgs.lib;
|
||||||
|
|
||||||
|
inherit bonLib;
|
||||||
|
bonModules = self.nixosModules;
|
||||||
|
bonPkgs = self.packages.${system};
|
||||||
|
|
||||||
|
craneLib = inputs.crane.mkLib pkgs;
|
||||||
|
fenixPkgs = inputs.fenix.packages.${system};
|
||||||
|
nixvimPkgs = inputs.nixvim.legacyPackages.${system};
|
||||||
|
};
|
||||||
in
|
in
|
||||||
forAllSystems (system: let
|
bonLib.collectPackages platformInputs {
|
||||||
pkgs = nixpkgsFor.${system};
|
bonfire-docs = {
|
||||||
|
source = ./bonfire-docs;
|
||||||
|
platforms = ["x86_64-linux"];
|
||||||
|
builder = {pkgs, ...}: pkgs.callPackage;
|
||||||
|
extraArgs = {inherit self;};
|
||||||
|
};
|
||||||
|
|
||||||
bonfire = self;
|
netgen = {
|
||||||
bonlib = self.lib;
|
source = ./netgen;
|
||||||
bonpkgs = self.packages.${system};
|
platforms = ["x86_64-linux"];
|
||||||
bonconfigs = self.configurations;
|
builder = {pkgs, ...}: pkgs.callPackage;
|
||||||
|
};
|
||||||
|
|
||||||
crane = self.inputs.crane;
|
dearpygui = {
|
||||||
crane-lib = self.inputs.crane.mkLib pkgs;
|
source = ./dearpygui;
|
||||||
|
platforms = ["x86_64-linux"];
|
||||||
|
builder = {pkgs, ...}: pkgs.callPackage;
|
||||||
|
};
|
||||||
|
|
||||||
fenix = self.inputs.fenix;
|
openfoam = {
|
||||||
fenix-pkgs = self.inputs.fenix.packages.${system};
|
source = ./openfoam;
|
||||||
|
platforms = ["x86_64-linux"];
|
||||||
|
builder = {pkgs, ...}: pkgs.callPackage;
|
||||||
|
};
|
||||||
|
|
||||||
nixvim-pkgs = self.inputs.nixvim.legacyPackages.${system};
|
spoofdpi = {
|
||||||
in {
|
source = ./spoofdpi;
|
||||||
bonfire-docs = pkgs.callPackage ./bonfire-docs {inherit bonfire;};
|
platforms = ["x86_64-linux"];
|
||||||
|
builder = {pkgs, ...}: pkgs.callPackage;
|
||||||
|
};
|
||||||
|
|
||||||
netgen = pkgs.callPackage ./netgen {inherit bonfire;};
|
ultimmc = {
|
||||||
|
source = ./ultimmc;
|
||||||
|
platforms = ["x86_64-linux"];
|
||||||
|
builder = {pkgs, ...}: pkgs.libsForQt5.callPackage;
|
||||||
|
};
|
||||||
|
|
||||||
dearpygui = pkgs.callPackage ./dearpygui {inherit bonfire;};
|
cargo-shuttle = {
|
||||||
|
source = ./cargo-shuttle;
|
||||||
|
platforms = ["x86_64-linux"];
|
||||||
|
builder = {pkgs, ...}: pkgs.callPackage;
|
||||||
|
};
|
||||||
|
|
||||||
openfoam = pkgs.callPackage ./openfoam {inherit bonfire;};
|
bonvim = {
|
||||||
|
source = ./bonvim;
|
||||||
|
platforms = ["x86_64-linux"];
|
||||||
|
builder = {...}: import;
|
||||||
|
};
|
||||||
|
|
||||||
spoofdpi = pkgs.callPackage ./spoofdpi {inherit bonfire;};
|
# Container images
|
||||||
|
|
||||||
lego = pkgs.callPackage ./lego {inherit bonfire;};
|
nix-minimal = {
|
||||||
|
source = ./nix-minimal;
|
||||||
|
platforms = ["x86_64-linux"];
|
||||||
|
builder = {pkgs, ...}: pkgs.callPackage;
|
||||||
|
};
|
||||||
|
|
||||||
ultimmc = pkgs.libsForQt5.callPackage ./ultimmc {inherit bonfire;};
|
nix-runner = {
|
||||||
|
source = ./nix-runner;
|
||||||
|
platforms = ["x86_64-linux"];
|
||||||
|
builder = {pkgs, ...}: pkgs.callPackage;
|
||||||
|
};
|
||||||
|
|
||||||
cargo-shuttle = pkgs.callPackage ./cargo-shuttle {inherit bonfire crane-lib;};
|
postgresql = {
|
||||||
|
source = ./postgresql;
|
||||||
|
platforms = ["x86_64-linux"];
|
||||||
|
builder = {pkgs, ...}: pkgs.callPackage;
|
||||||
|
};
|
||||||
|
|
||||||
nix-minimal = pkgs.callPackage ./nix-minimal {inherit bonpkgs bonlib;};
|
redis = {
|
||||||
|
source = ./redis;
|
||||||
nix-runner = pkgs.callPackage ./nix-runner {inherit bonpkgs bonlib;};
|
platforms = ["x86_64-linux"];
|
||||||
|
builder = {pkgs, ...}: pkgs.callPackage;
|
||||||
bonvim = import ./bonvim {inherit nixvim-pkgs pkgs bonconfigs fenix-pkgs;};
|
};
|
||||||
})
|
}
|
||||||
|
@ -1,41 +0,0 @@
|
|||||||
{
|
|
||||||
bonfire,
|
|
||||||
lib,
|
|
||||||
fetchFromGitHub,
|
|
||||||
buildGoModule,
|
|
||||||
nixosTests,
|
|
||||||
version ? "c847ac4a4c55d6a5a457f6ef494cf45a47299e01",
|
|
||||||
hash ? "sha256-g9OxhM+iNUrAZgM1we8qPsismPy5a0eN654tSYuM/No=",
|
|
||||||
vendorHash ? "sha256-wG0x86lptEY3x+7kVN7v1XZniliMOxaJ6Y95YS6ivJY=",
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
buildGoModule rec {
|
|
||||||
pname = "lego";
|
|
||||||
inherit version;
|
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
|
||||||
owner = "go-acme";
|
|
||||||
repo = "lego";
|
|
||||||
rev = version;
|
|
||||||
hash = hash;
|
|
||||||
};
|
|
||||||
|
|
||||||
inherit vendorHash;
|
|
||||||
|
|
||||||
doCheck = false;
|
|
||||||
|
|
||||||
subPackages = ["cmd/lego"];
|
|
||||||
|
|
||||||
ldflags = [
|
|
||||||
"-X main.version=${version}"
|
|
||||||
];
|
|
||||||
|
|
||||||
meta = with lib; {
|
|
||||||
description = "Let's Encrypt client and ACME library written in Go";
|
|
||||||
license = licenses.mit;
|
|
||||||
homepage = "https://go-acme.github.io/lego/";
|
|
||||||
maintainers = with bonfire.lib.maintainers; [L-Nafaryus];
|
|
||||||
};
|
|
||||||
|
|
||||||
passthru.tests.lego = nixosTests.acme;
|
|
||||||
}
|
|
@ -1,5 +1,5 @@
|
|||||||
{
|
{
|
||||||
bonfire,
|
bonLib,
|
||||||
stdenv,
|
stdenv,
|
||||||
lib,
|
lib,
|
||||||
pkgs,
|
pkgs,
|
||||||
@ -69,8 +69,8 @@
|
|||||||
description = "NETGEN is an automatic 3d tetrahedral mesh generator";
|
description = "NETGEN is an automatic 3d tetrahedral mesh generator";
|
||||||
license = licenses.lgpl21Only;
|
license = licenses.lgpl21Only;
|
||||||
platforms = platforms.linux;
|
platforms = platforms.linux;
|
||||||
maintainers = with bonfire.lib.maintainers; [L-Nafaryus];
|
maintainers = with bonLib.maintainers; [L-Nafaryus];
|
||||||
broken = pkgs.stdenv.isDarwin;
|
broken = true;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
in
|
in
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
pkgs,
|
pkgs,
|
||||||
lib,
|
lib,
|
||||||
bonlib,
|
bonLib,
|
||||||
extraPaths ? [],
|
extraPaths ? [],
|
||||||
...
|
...
|
||||||
}: let
|
}: let
|
||||||
@ -145,6 +145,6 @@ in
|
|||||||
'';
|
'';
|
||||||
platforms = platforms.linux;
|
platforms = platforms.linux;
|
||||||
license = licenses.lgpl21Plus;
|
license = licenses.lgpl21Plus;
|
||||||
maintainers = with bonlib.maintainers; [L-Nafaryus];
|
maintainers = with bonLib.maintainers; [L-Nafaryus];
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
@ -1,15 +1,14 @@
|
|||||||
{
|
{
|
||||||
pkgs,
|
pkgs,
|
||||||
lib,
|
lib,
|
||||||
bonpkgs,
|
bonPkgs,
|
||||||
bonlib,
|
|
||||||
extraPaths ? [],
|
extraPaths ? [],
|
||||||
...
|
...
|
||||||
}:
|
}:
|
||||||
pkgs.dockerTools.buildImage {
|
pkgs.dockerTools.buildImage {
|
||||||
name = "nix-runner";
|
name = "nix-runner";
|
||||||
tag = "latest";
|
tag = "latest";
|
||||||
fromImage = bonpkgs.nix-minimal;
|
fromImage = bonPkgs.nix-minimal;
|
||||||
|
|
||||||
copyToRoot = pkgs.buildEnv {
|
copyToRoot = pkgs.buildEnv {
|
||||||
name = "image-root";
|
name = "image-root";
|
||||||
@ -27,7 +26,7 @@ pkgs.dockerTools.buildImage {
|
|||||||
}
|
}
|
||||||
// {
|
// {
|
||||||
meta =
|
meta =
|
||||||
bonpkgs.nix-minimal.meta
|
bonPkgs.nix-minimal.meta
|
||||||
// {
|
// {
|
||||||
description = "Image for action runners with a Nix package manager";
|
description = "Image for action runners with a Nix package manager";
|
||||||
longDescription = ''
|
longDescription = ''
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
{
|
{
|
||||||
bonfire,
|
bonLib,
|
||||||
stdenv,
|
stdenv,
|
||||||
lib,
|
lib,
|
||||||
pkgs,
|
pkgs,
|
||||||
@ -79,7 +79,7 @@ in let
|
|||||||
description = "OpenFOAM is a free, open source CFD software released and developed by OpenFOAM Foundation";
|
description = "OpenFOAM is a free, open source CFD software released and developed by OpenFOAM Foundation";
|
||||||
license = licenses.gpl3;
|
license = licenses.gpl3;
|
||||||
platforms = platforms.linux;
|
platforms = platforms.linux;
|
||||||
maintainers = with bonfire.lib.maintainers; [L-Nafaryus];
|
maintainers = with bonLib.maintainers; [L-Nafaryus];
|
||||||
broken = pkgs.stdenv.isDarwin;
|
broken = pkgs.stdenv.isDarwin;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
58
packages/postgresql/default.nix
Normal file
58
packages/postgresql/default.nix
Normal file
@ -0,0 +1,58 @@
|
|||||||
|
{
|
||||||
|
pkgs,
|
||||||
|
lib,
|
||||||
|
bonLib,
|
||||||
|
extraPaths ? [],
|
||||||
|
...
|
||||||
|
}: let
|
||||||
|
user = "postgres";
|
||||||
|
dataDir = "/var/lib/postgresql";
|
||||||
|
entryPoint = pkgs.writeTextDir "entrypoint.sh" ''
|
||||||
|
initdb -U ${user}
|
||||||
|
postgres -k ${dataDir}
|
||||||
|
'';
|
||||||
|
in
|
||||||
|
pkgs.dockerTools.buildImage {
|
||||||
|
name = "postgresql";
|
||||||
|
tag = "latest";
|
||||||
|
|
||||||
|
copyToRoot = pkgs.buildEnv {
|
||||||
|
name = "image-root";
|
||||||
|
pathsToLink = ["/bin" "/etc" "/"];
|
||||||
|
paths = with pkgs;
|
||||||
|
[
|
||||||
|
bash
|
||||||
|
postgresql
|
||||||
|
entryPoint
|
||||||
|
]
|
||||||
|
++ extraPaths;
|
||||||
|
};
|
||||||
|
runAsRoot = with pkgs; ''
|
||||||
|
#!${runtimeShell}
|
||||||
|
${dockerTools.shadowSetup}
|
||||||
|
groupadd -r ${user}
|
||||||
|
useradd -r -g ${user} --home-dir=${dataDir} ${user}
|
||||||
|
mkdir -p ${dataDir}
|
||||||
|
chown -R ${user}:${user} ${dataDir}
|
||||||
|
'';
|
||||||
|
|
||||||
|
config = {
|
||||||
|
Entrypoint = ["bash" "/entrypoint.sh"];
|
||||||
|
StopSignal = "SIGINT";
|
||||||
|
User = "${user}:${user}";
|
||||||
|
Env = ["PGDATA=${dataDir}"];
|
||||||
|
WorkingDir = dataDir;
|
||||||
|
ExposedPorts = {
|
||||||
|
"5432/tcp" = {};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
|
// {
|
||||||
|
meta = with lib; {
|
||||||
|
homepage = "https://www.postgresql.org";
|
||||||
|
description = "A powerful, open source object-relational database system.";
|
||||||
|
platforms = platforms.linux;
|
||||||
|
license = licenses.postgresql;
|
||||||
|
maintainers = with bonLib.maintainers; [L-Nafaryus];
|
||||||
|
};
|
||||||
|
}
|
58
packages/redis/default.nix
Normal file
58
packages/redis/default.nix
Normal file
@ -0,0 +1,58 @@
|
|||||||
|
{
|
||||||
|
pkgs,
|
||||||
|
lib,
|
||||||
|
bonLib,
|
||||||
|
extraPaths ? [],
|
||||||
|
...
|
||||||
|
}: let
|
||||||
|
user = "redis";
|
||||||
|
dataDir = "/var/lib/redis";
|
||||||
|
entryPoint = pkgs.writeTextDir "entrypoint.sh" ''
|
||||||
|
redis-server \
|
||||||
|
--daemonize no \
|
||||||
|
--dir "${dataDir}"
|
||||||
|
'';
|
||||||
|
in
|
||||||
|
pkgs.dockerTools.buildImage {
|
||||||
|
name = "redis";
|
||||||
|
tag = "latest";
|
||||||
|
|
||||||
|
copyToRoot = pkgs.buildEnv {
|
||||||
|
name = "image-root";
|
||||||
|
pathsToLink = ["/bin" "/etc" "/"];
|
||||||
|
paths = with pkgs;
|
||||||
|
[
|
||||||
|
bash
|
||||||
|
redis
|
||||||
|
entryPoint
|
||||||
|
]
|
||||||
|
++ extraPaths;
|
||||||
|
};
|
||||||
|
runAsRoot = with pkgs; ''
|
||||||
|
#!${runtimeShell}
|
||||||
|
${dockerTools.shadowSetup}
|
||||||
|
groupadd -r ${user}
|
||||||
|
useradd -r -g ${user} --home-dir=${dataDir} ${user}
|
||||||
|
mkdir -p ${dataDir}
|
||||||
|
chown -R ${user}:${user} ${dataDir}
|
||||||
|
'';
|
||||||
|
|
||||||
|
config = {
|
||||||
|
Entrypoint = ["bash" "/entrypoint.sh"];
|
||||||
|
StopSignal = "SIGINT";
|
||||||
|
User = "${user}:${user}";
|
||||||
|
WorkingDir = dataDir;
|
||||||
|
ExposedPorts = {
|
||||||
|
"6379/tcp" = {};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
|
// {
|
||||||
|
meta = with lib; {
|
||||||
|
homepage = "https://redis.io";
|
||||||
|
description = "An open source, advanced key-value store.";
|
||||||
|
platforms = platforms.linux;
|
||||||
|
license = licenses.bsd3;
|
||||||
|
maintainers = with bonLib.maintainers; [L-Nafaryus];
|
||||||
|
};
|
||||||
|
}
|
@ -1,5 +1,5 @@
|
|||||||
{
|
{
|
||||||
bonfire,
|
bonLib,
|
||||||
lib,
|
lib,
|
||||||
pkgs,
|
pkgs,
|
||||||
version ? "0.8",
|
version ? "0.8",
|
||||||
@ -28,7 +28,7 @@ pkgs.buildGoModule {
|
|||||||
homepage = "https://github.com/xvzc/SpoofDPI";
|
homepage = "https://github.com/xvzc/SpoofDPI";
|
||||||
description = "A simple and fast anti-censorship tool written in Go";
|
description = "A simple and fast anti-censorship tool written in Go";
|
||||||
license = licenses.asl20;
|
license = licenses.asl20;
|
||||||
maintainers = with bonfire.lib.maintainers; [L-Nafaryus];
|
maintainers = with bonLib.maintainers; [L-Nafaryus];
|
||||||
broken = false;
|
broken = false;
|
||||||
mainProgram = "spoof-dpi";
|
mainProgram = "spoof-dpi";
|
||||||
};
|
};
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
{
|
{
|
||||||
bonfire,
|
bonLib,
|
||||||
lib,
|
lib,
|
||||||
stdenv,
|
stdenv,
|
||||||
fetchFromGitHub,
|
fetchFromGitHub,
|
||||||
@ -13,6 +13,7 @@
|
|||||||
xorg,
|
xorg,
|
||||||
libpulseaudio,
|
libpulseaudio,
|
||||||
libGL,
|
libGL,
|
||||||
|
...
|
||||||
}:
|
}:
|
||||||
stdenv.mkDerivation rec {
|
stdenv.mkDerivation rec {
|
||||||
version = "faf3c966c43465d6f6c245ed78556222240398ee";
|
version = "faf3c966c43465d6f6c245ed78556222240398ee";
|
||||||
@ -78,6 +79,6 @@ stdenv.mkDerivation rec {
|
|||||||
description = "Cracked Minecraft Launcher";
|
description = "Cracked Minecraft Launcher";
|
||||||
license = licenses.asl20;
|
license = licenses.asl20;
|
||||||
platforms = platforms.linux;
|
platforms = platforms.linux;
|
||||||
maintainers = with bonfire.lib.maintainers; [L-Nafaryus];
|
maintainers = with bonLib.maintainers; [L-Nafaryus];
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user