mirror of
https://github.com/foo-dogsquared/nixos-config.git
synced 2025-02-07 12:19:07 +00:00
lib: standardize arguments (again)
We'll just copy what we did with Bahaghari project.
This commit is contained in:
parent
344a1667a4
commit
ba6b30ca95
@ -2,41 +2,12 @@
|
|||||||
{ pkgs }:
|
{ pkgs }:
|
||||||
|
|
||||||
pkgs.lib.makeExtensible
|
pkgs.lib.makeExtensible
|
||||||
(self:
|
(self:
|
||||||
rec {
|
let
|
||||||
/* Count the attributes with the given predicate.
|
inherit (pkgs) lib;
|
||||||
|
callLib = file: import file { inherit pkgs lib self; };
|
||||||
|
in {
|
||||||
|
trivial = callLib ./trivial.nix;
|
||||||
|
|
||||||
Examples:
|
inherit (self.trivial) countAttrs getConfig getUser;
|
||||||
countAttrs (name: value: value) { d = true; f = true; a = false; }
|
})
|
||||||
=> 2
|
|
||||||
|
|
||||||
countAttrs (name: value: value.enable) { d = { enable = true; }; f = { enable = false; package = [ ]; }; }
|
|
||||||
=> 1
|
|
||||||
*/
|
|
||||||
countAttrs = pred: attrs:
|
|
||||||
pkgs.lib.count (attr: pred attr.name attr.value)
|
|
||||||
(pkgs.lib.mapAttrsToList pkgs.lib.nameValuePair attrs);
|
|
||||||
|
|
||||||
/* Returns the file path of the given config of the given environment.
|
|
||||||
|
|
||||||
Type: getConfig :: String -> String -> Path
|
|
||||||
|
|
||||||
Example:
|
|
||||||
getConfig "home-manager" "foo-dogsquared"
|
|
||||||
=> ../configs/home-manager/foo-dogsquared
|
|
||||||
*/
|
|
||||||
getConfig = type: config: ../configs/${type}/${config};
|
|
||||||
|
|
||||||
|
|
||||||
/* Returns the file path of the given user subpart of the given
|
|
||||||
environment. Only certain environments such as NixOS have this type of
|
|
||||||
setup.
|
|
||||||
|
|
||||||
Type: getConfig :: String -> String -> Path
|
|
||||||
|
|
||||||
Example:
|
|
||||||
getUser "nixos" "foo-dogsquared"
|
|
||||||
=> ../configs/nixos/_users/foo-dogsquared
|
|
||||||
*/
|
|
||||||
getUser = type: user: ../configs/${type}/_users/${user};
|
|
||||||
})
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
# Custom libraries for home-manager library.
|
# Custom libraries for home-manager library.
|
||||||
{ pkgs, lib }:
|
{ pkgs, lib, self }:
|
||||||
|
|
||||||
rec {
|
rec {
|
||||||
/*
|
/*
|
||||||
@ -15,7 +15,7 @@ rec {
|
|||||||
|
|
||||||
# The default value when `attrPath` is missing.
|
# The default value when `attrPath` is missing.
|
||||||
default:
|
default:
|
||||||
attrs ? nixosConfig && pkgs.lib.attrByPath attrPath default attrs;
|
attrs ? nixosConfig && lib.attrByPath attrPath default attrs;
|
||||||
|
|
||||||
hasDarwinConfigAttr =
|
hasDarwinConfigAttr =
|
||||||
# The configuration attribute set of the home-manager configuration.
|
# The configuration attribute set of the home-manager configuration.
|
||||||
|
@ -1,14 +1,14 @@
|
|||||||
# All of the functions suitable only for NixOS.
|
# All of the functions suitable only for NixOS.
|
||||||
{ pkgs, lib }:
|
{ pkgs, lib, self }:
|
||||||
|
|
||||||
rec {
|
{
|
||||||
# Checks if the NixOS configuration is part of the nixos-generator build.
|
# Checks if the NixOS configuration is part of the nixos-generator build.
|
||||||
# Typically, we just check if there's a certain attribute that is imported
|
# Typically, we just check if there's a certain attribute that is imported
|
||||||
# from it.
|
# from it.
|
||||||
hasNixosFormat = config:
|
hasNixosFormat = config:
|
||||||
pkgs.lib.hasAttrByPath [ "formatAttr" ] config;
|
lib.hasAttrByPath [ "formatAttr" ] config;
|
||||||
|
|
||||||
# Checks if the NixOS config is being built for a particular format.
|
# Checks if the NixOS config is being built for a particular format.
|
||||||
isFormat = config: format:
|
isFormat = config: format:
|
||||||
hasNixosFormat config && config.formatAttr == format;
|
(config.formatAttr or "") == format;
|
||||||
}
|
}
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
{ pkgs, lib }:
|
{ pkgs, lib, self }:
|
||||||
|
|
||||||
{
|
{
|
||||||
isStandalone = config:
|
isStandalone = config:
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
# A library specifically for environments with sops-nix.
|
# A library specifically for environments with sops-nix.
|
||||||
{ pkgs, lib }:
|
{ pkgs, lib, self }:
|
||||||
|
|
||||||
{
|
{
|
||||||
/* Get the secrets from a given sops file. This will set the individual
|
/* Get the secrets from a given sops file. This will set the individual
|
||||||
@ -21,7 +21,7 @@
|
|||||||
let
|
let
|
||||||
getKey = key: { inherit key sopsFile; };
|
getKey = key: { inherit key sopsFile; };
|
||||||
in
|
in
|
||||||
pkgs.lib.mapAttrs
|
lib.mapAttrs
|
||||||
(path: attrs:
|
(path: attrs:
|
||||||
(getKey path) // attrs)
|
(getKey path) // attrs)
|
||||||
secrets;
|
secrets;
|
||||||
@ -44,9 +44,9 @@
|
|||||||
}))
|
}))
|
||||||
*/
|
*/
|
||||||
attachSopsPathPrefix = prefix: secrets:
|
attachSopsPathPrefix = prefix: secrets:
|
||||||
pkgs.lib.mapAttrs'
|
lib.mapAttrs'
|
||||||
(key: settings:
|
(key: settings:
|
||||||
pkgs.lib.nameValuePair
|
lib.nameValuePair
|
||||||
"${prefix}/${key}"
|
"${prefix}/${key}"
|
||||||
({ inherit key; } // settings))
|
({ inherit key; } // settings))
|
||||||
secrets;
|
secrets;
|
||||||
|
39
lib/trivial.nix
Normal file
39
lib/trivial.nix
Normal file
@ -0,0 +1,39 @@
|
|||||||
|
{ pkgs, lib, self }:
|
||||||
|
|
||||||
|
{
|
||||||
|
/* Count the attributes with the given predicate.
|
||||||
|
|
||||||
|
Examples:
|
||||||
|
countAttrs (name: value: value) { d = true; f = true; a = false; }
|
||||||
|
=> 2
|
||||||
|
|
||||||
|
countAttrs (name: value: value.enable) { d = { enable = true; }; f = { enable = false; package = [ ]; }; }
|
||||||
|
=> 1
|
||||||
|
*/
|
||||||
|
countAttrs = pred: attrs:
|
||||||
|
lib.count (attr: pred attr.name attr.value)
|
||||||
|
(lib.mapAttrsToList lib.nameValuePair attrs);
|
||||||
|
|
||||||
|
/* Returns the file path of the given config of the given environment.
|
||||||
|
|
||||||
|
Type: getConfig :: String -> String -> Path
|
||||||
|
|
||||||
|
Example:
|
||||||
|
getConfig "home-manager" "foo-dogsquared"
|
||||||
|
=> ../configs/home-manager/foo-dogsquared
|
||||||
|
*/
|
||||||
|
getConfig = type: config: ../configs/${type}/${config};
|
||||||
|
|
||||||
|
|
||||||
|
/* Returns the file path of the given user subpart of the given
|
||||||
|
environment. Only certain environments such as NixOS have this type of
|
||||||
|
setup.
|
||||||
|
|
||||||
|
Type: getConfig :: String -> String -> Path
|
||||||
|
|
||||||
|
Example:
|
||||||
|
getUser "nixos" "foo-dogsquared"
|
||||||
|
=> ../configs/nixos/_users/foo-dogsquared
|
||||||
|
*/
|
||||||
|
getUser = type: user: ../configs/${type}/_users/${user};
|
||||||
|
}
|
@ -8,8 +8,8 @@ in
|
|||||||
{
|
{
|
||||||
_module.args.foodogsquaredLib =
|
_module.args.foodogsquaredLib =
|
||||||
foodogsquaredLib.extend (final: prev: {
|
foodogsquaredLib.extend (final: prev: {
|
||||||
home-manager = import ../../../lib/home-manager.nix { inherit pkgs; lib = prev; };
|
home-manager = import ../../../lib/home-manager.nix { inherit pkgs lib; self = final; };
|
||||||
} // lib.optionalAttrs (options?sops) {
|
} // lib.optionalAttrs (options?sops) {
|
||||||
sops-nix = import ../../../lib/sops.nix { inherit pkgs; lib = prev; };
|
sops-nix = import ../../../lib/sops.nix { inherit pkgs lib; self = final; };
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
@ -8,8 +8,8 @@ in
|
|||||||
{
|
{
|
||||||
_module.args.foodogsquaredLib =
|
_module.args.foodogsquaredLib =
|
||||||
foodogsquaredLib.extend (final: prev: {
|
foodogsquaredLib.extend (final: prev: {
|
||||||
nixos = import ../../../lib/nixos.nix { inherit pkgs; lib = final; };
|
nixos = import ../../../lib/nixos.nix { inherit pkgs lib; self = final; };
|
||||||
} // lib.optionalAttrs (options?sops) {
|
} // lib.optionalAttrs (options?sops) {
|
||||||
sops-nix = import ../../../lib/sops.nix { inherit pkgs; lib = final; };
|
sops-nix = import ../../../lib/sops.nix { inherit pkgs lib; self = final; };
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
@ -7,6 +7,6 @@ in
|
|||||||
{
|
{
|
||||||
_module.args.foodogsquaredLib =
|
_module.args.foodogsquaredLib =
|
||||||
foodogsquaredLib.extend (final: prev: {
|
foodogsquaredLib.extend (final: prev: {
|
||||||
nixvim = import ../../../lib/nixvim.nix { inherit pkgs; lib = prev; };
|
nixvim = import ../../../lib/nixvim.nix { inherit pkgs lib; self = final; };
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user