Signed-off-by: Nikolaos Karaolidis <nick@karaolidis.com>
This commit is contained in:
2025-08-17 12:24:38 +03:00
parent c122daa872
commit afc80d8f42
11 changed files with 182 additions and 1 deletions

View File

@@ -1,3 +1,3 @@
# nix-lib # nix-lib
NixOS libraries and utilities Nix library function definitions and utilities.

48
flake.lock generated Normal file
View File

@@ -0,0 +1,48 @@
{
"nodes": {
"nixpkgs": {
"locked": {
"lastModified": 1754725699,
"narHash": "sha256-iAcj9T/Y+3DBy2J0N+yF9XQQQ8IEb5swLFzs23CdP88=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "85dbfc7aaf52ecb755f87e577ddbe6dbbdbc1054",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixos-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"root": {
"inputs": {
"nixpkgs": "nixpkgs",
"treefmt-nix": "treefmt-nix"
}
},
"treefmt-nix": {
"inputs": {
"nixpkgs": [
"nixpkgs"
]
},
"locked": {
"lastModified": 1754847726,
"narHash": "sha256-2vX8QjO5lRsDbNYvN9hVHXLU6oMl+V/PsmIiJREG4rE=",
"owner": "numtide",
"repo": "treefmt-nix",
"rev": "7d81f6fb2e19bf84f1c65135d1060d829fae2408",
"type": "github"
},
"original": {
"owner": "numtide",
"repo": "treefmt-nix",
"type": "github"
}
}
},
"root": "root",
"version": 7
}

31
flake.nix Normal file
View File

@@ -0,0 +1,31 @@
{
inputs = {
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
treefmt-nix = {
url = "github:numtide/treefmt-nix";
inputs.nixpkgs.follows = "nixpkgs";
};
};
outputs =
inputs:
(
let
system = "x86_64-linux";
pkgs = import inputs.nixpkgs {
inherit system;
config.allowUnfree = true;
};
treefmt = inputs.treefmt-nix.lib.evalModule pkgs ./treefmt.nix;
in
{
lib.${system} = import ./lib { inherit pkgs; };
formatter.${system} = treefmt.config.build.wrapper;
checks.${system}.formatting = treefmt.config.build.check inputs.self;
}
);
}

5
lib/default.nix Normal file
View File

@@ -0,0 +1,5 @@
{ pkgs, ... }:
{
fetchers = import ./fetchers { inherit pkgs; };
runtime = import ./runtime { inherit pkgs; };
}

4
lib/fetchers/default.nix Normal file
View File

@@ -0,0 +1,4 @@
{ pkgs, ... }:
{
sshKnownHosts = import ./sshKnownHosts { inherit pkgs; };
}

View File

@@ -0,0 +1,33 @@
{ pkgs, ... }:
pkgs.lib.fetchers.withNormalizedHash { } (
{
host,
name ? "ssh-known-hosts-${host}",
outputHash,
outputHashAlgo,
port ? 22,
keyTypes ? [
"rsa"
"ecdsa"
"ed25519"
],
}:
let
keyTypeArgs = pkgs.lib.concatStringsSep "," keyTypes;
in
pkgs.runCommandLocal name
{
inherit outputHash outputHashAlgo;
outputHashMode = "flat";
preferLocalBuild = true;
nativeBuildInputs = with pkgs; [
openssh
gnugrep
coreutils
];
}
''
ssh-keyscan -p ${toString port} -t ${keyTypeArgs} ${host} | grep -v '^#' | sort > $out
''
)

4
lib/runtime/default.nix Normal file
View File

@@ -0,0 +1,4 @@
{ pkgs, ... }:
{
merge = import ./merge { inherit pkgs; };
}

View File

@@ -0,0 +1,4 @@
{ pkgs, ... }:
{
keyValue = import ./keyValue { inherit pkgs; };
}

View File

@@ -0,0 +1,11 @@
{ pkgs, ... }:
"${
pkgs.writeShellApplication {
name = "merge-key-value";
runtimeInputs = with pkgs; [
coreutils
gawk
];
text = builtins.readFile ./key-value.sh;
}
}/bin/merge-key-value"

View File

@@ -0,0 +1,15 @@
# shellcheck shell=bash
source=$(realpath -m "$1")
target=$(realpath -m "$2")
if [[ -f "$target" ]]; then
temp=$(mktemp)
awk -F '=' 'NR==FNR{a[$1]=$0;next}($1 in a){$0=a[$1]}1' "$source" "$target" > "$temp"
mv "$temp" "$target"
else
mkdir -p "$(dirname "$target")"
cp "$source" "$target"
fi
echo "Configuration file $target has been updated."

26
treefmt.nix Normal file
View File

@@ -0,0 +1,26 @@
{ ... }:
{
projectRootFile = "flake.nix";
programs = {
nixfmt = {
enable = true;
strict = true;
};
shellcheck.enable = true;
prettier.enable = true;
gofmt.enable = true;
};
settings.global.excludes = [
# Git
"*/.gitignore"
".gitattributes"
".envrc"
# Manifest Files
"*/package.json"
"*/go.mod"
"*/bun.lockb"
];
}