summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBenedikt Peetz <benedikt.peetz@b-peetz.de>2026-11-02 19:56:15 +0100
committerBenedikt Peetz <benedikt.peetz@b-peetz.de>2026-11-05 22:47:43 +0100
commit183382a7fcebe45618395965d8dc57971529b7b5 (patch)
treee5597f1db5ecbcefcc4110428cfeeb05fad45945
parentmodules/*: Fix various name mistakes and other issues (diff)
downloadnixos-config-183382a7fcebe45618395965d8dc57971529b7b5.zip
lib: Merge with the `extraLib`
-rw-r--r--lib/default.nix126
1 files changed, 0 insertions, 126 deletions
diff --git a/lib/default.nix b/lib/default.nix
deleted file mode 100644
index 1cdbf936..00000000
--- a/lib/default.nix
+++ /dev/null
@@ -1,126 +0,0 @@
-# nixos-config - My current NixOS configuration
-#
-# Copyright (C) 2025 Benedikt Peetz <benedikt.peetz@b-peetz.de>
-# SPDX-License-Identifier: GPL-3.0-or-later
-#
-# This file is part of my nixos-config.
-#
-# You should have received a copy of the License along with this program.
-# If not, see <https://www.gnu.org/licenses/gpl-3.0.txt>.
-{lib}: rec {
- /*
- Converts `number` from a binary number to a decimal one.
-
- The input is indented to be a number composed only of `1`s and `0` (e.g., 10010.)
-
- # Type
-
- binaryToDecimal :: Int -> Int
-
- # Arguments
-
- number
- : The sequence of `1`s and `0`s defining a binary number, in little endian.
-
- # Examples
-
- binaryToDecimal 1001
- => 9
- */
- binaryToDecimal = number: let
- binaryList =
- builtins.map lib.strings.toInt (lib.lists.reverseList (lib.strings.stringToCharacters (builtins.toString number)));
- in
- builtins.foldl' (acc: num: acc + num) 0
- (lib.lists.imap0 (index: elem: elem * (pow 2 index)) binaryList);
-
- /*
- Converts `string` to a (probably) unique numerical id.
-
- This is achieved by hashing the string and returning the first six hex-digits
- converted to a base 10 number.
-
- # Type
-
- idFromString :: String -> Int
-
- # Arguments
-
- string
- : The string to use as seed for the id generation.
-
- # Examples
-
- idFromString "3d-printer"
- => 10365713
- */
- idFromString = string: let
- inputSeed =
- builtins.concatStringsSep ""
- (lib.lists.take 6
- (lib.strings.stringToCharacters (builtins.hashString "sha256" string)));
- in
- lib.trivial.fromHexString inputSeed;
-
- /*
- source: https://github.com/NixOS/nix/issues/10387#issuecomment-2494597690
-
- Raises the `base` to the power of `power`.
-
- Considering the small input size and the lack of a built-in power function [2],
- this naive power implementation should satisfy reasonable performance
- requirements.
-
- Due to the lack of a modulo and bitwise AND operator, it is questionable whether
- the recursive exponentiation by squaring [1] implementation would even be
- faster.
-
- [1]: https://en.wikipedia.org/wiki/Exponentiation_by_squaring
- [2]: https://github.com/NixOS/nix/issues/10387
-
- # Type
-
- pow :: Number -> Number -> Number
-
- # Arguments
-
- base
- : The base number to be raised.
-
- power
- : The exponent to raise `base` to.
-
- # Examples
-
- pow 2 5
- => 32
- */
- pow = base: power:
- if power == 0
- then 1
- else if power > 0
- then (base * (pow base (power - 1)))
- else builtins.throw "Negative powers are not supported";
-
- options = {
- /*
- Generate an enable option definition, that defaults to true.
-
- This conveniently allows the composition of a “common” module set.
-
- # Type
-
- mkEnable :: String -> AttrSet
-
- # Arguments
-
- name
- : The name to use in the option description.
- */
- mkEnable = name:
- (lib.mkEnableOption name)
- // {
- default = true;
- };
- };
-}