diff options
| author | Benedikt Peetz <benedikt.peetz@b-peetz.de> | 2026-11-02 19:56:15 +0100 |
|---|---|---|
| committer | Benedikt Peetz <benedikt.peetz@b-peetz.de> | 2026-11-05 22:47:43 +0100 |
| commit | 183382a7fcebe45618395965d8dc57971529b7b5 (patch) | |
| tree | e5597f1db5ecbcefcc4110428cfeeb05fad45945 | |
| parent | modules/*: Fix various name mistakes and other issues (diff) | |
| download | nixos-config-183382a7fcebe45618395965d8dc57971529b7b5.zip | |
lib: Merge with the `extraLib`
| -rw-r--r-- | lib/default.nix | 126 |
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; - }; - }; -} |
