From 947b7555956b38ef768cf5406ecb545a2722d014 Mon Sep 17 00:00:00 2001 From: Yusuf Bera Ertan Date: Sat, 15 May 2021 04:11:35 +0300 Subject: [PATCH] refactor: eh maybe we dont really need to depend on nixpkgs lib --- flake.lock | 26 -------------------------- flake.nix | 31 ++++--------------------------- pkgs-lib.nix | 15 +++++++++------ tags.nix | 6 +++--- utils.nix | 30 ++++++++++++++++++++++++++++++ 5 files changed, 46 insertions(+), 62 deletions(-) delete mode 100644 flake.lock create mode 100644 utils.nix diff --git a/flake.lock b/flake.lock deleted file mode 100644 index c525463..0000000 --- a/flake.lock +++ /dev/null @@ -1,26 +0,0 @@ -{ - "nodes": { - "nixpkgsLib": { - "locked": { - "lastModified": 1620519687, - "narHash": "sha256-+6Dd72b2CASuXm2W7KRxZIE7AOy/dj4mU28vaF+zxcs=", - "owner": "divnix", - "repo": "nixpkgs.lib", - "rev": "c7b6169809c5f74dd0c34f3d69e9d12ba4d448de", - "type": "github" - }, - "original": { - "owner": "divnix", - "repo": "nixpkgs.lib", - "type": "github" - } - }, - "root": { - "inputs": { - "nixpkgsLib": "nixpkgsLib" - } - } - }, - "root": "root", - "version": 7 -} diff --git a/flake.nix b/flake.nix index 8196133..bdaabc4 100644 --- a/flake.nix +++ b/flake.nix @@ -1,34 +1,11 @@ { - inputs = { - nixpkgsLib.url = "github:divnix/nixpkgs.lib"; - }; - - outputs = { self, nixpkgsLib }: + outputs = { self }: let - lib = nixpkgsLib.lib // { - recursiveAttrPaths = set: - let - flattenIfHasList = x: - if (lib.isList x) && (lib.any lib.isList x) - then lib.concatMap flattenIfHasList x - else [ x ]; + utils = import ./utils.nix; - recurse = path: set: - let - g = - name: value: - if lib.isAttrs value - then recurse (path ++ [ name ]) value - else path ++ [ name ]; - in - lib.mapAttrsToList g set; - in - flattenIfHasList (recurse [ ] set); - }; - - tags = import ./tags.nix { format = false; inherit lib; }; + tags = import ./tags.nix { format = false; inherit utils; }; pkgsLib = (final: prev: { - htmlNix = import ./pkgs-lib.nix { inherit lib; pkgs = prev; }; + htmlNix = import ./pkgs-lib.nix { pkgs = prev; inherit utils; }; }); in { diff --git a/pkgs-lib.nix b/pkgs-lib.nix index f4f345b..a2a9615 100644 --- a/pkgs-lib.nix +++ b/pkgs-lib.nix @@ -1,4 +1,4 @@ -{ lib, pkgs }: +{ utils, pkgs }: let pkgBin = name: "${pkgs.${name}}/bin/${name}"; in { mkServePathScript = path: pkgs.writeScriptBin "serve" '' @@ -8,13 +8,16 @@ let pkgBin = name: "${pkgs.${name}}/bin/${name}"; in mkSitePath = site: let - fileAttrPaths = lib.recursiveAttrPaths site; - texts = lib.mapAttrsRecursive (path: value: pkgs.writeText (lib.concatStringsSep "-" path) value) site; - mkCreateFileCmd = path: value: let p = lib.concatStringsSep "/" (lib.init path); in "mkdir -p $out/${p} && ln -s ${value} $out/${p}/${lib.last path}"; - createFileCmds = map (path: mkCreateFileCmd path (lib.getAttrFromPath path texts)) fileAttrPaths; + inherit (utils) recursiveAttrPaths concatStringsSep map; + inherit (pkgs.lib) mapAttrsRecursive init last getAttrFromPath; + + fileAttrPaths = recursiveAttrPaths site; + texts = mapAttrsRecursive (path: value: pkgs.writeText (concatStringsSep "-" path) value) site; + mkCreateFileCmd = path: value: let p = concatStringsSep "/" (init path); in "mkdir -p $out/${p} && ln -s ${value} $out/${p}/${last path}"; + createFileCmds = map (path: mkCreateFileCmd path (getAttrFromPath path texts)) fileAttrPaths; in pkgs.runCommand "site-path" { } '' mkdir -p $out - ${lib.concatStringsSep "\n" createFileCmds} + ${concatStringsSep "\n" createFileCmds} ''; } diff --git a/tags.nix b/tags.nix index d14b38d..c086a2c 100644 --- a/tags.nix +++ b/tags.nix @@ -1,6 +1,6 @@ -{ format ? false, lib }: +{ format ? false, utils }: let - inherit (lib) concatStrings mapAttrsToList genAttrs isAttrs isList; + inherit (utils) concatStrings mapAttrsToList genAttrs isAttrs isList; fmt = if format then "\n " else ""; @@ -11,7 +11,7 @@ let then (children: "<${name}${evalAttrs maybeAttrs}>${fmt}${evalChildren children}${fmt}") else tag name { } maybeAttrs; - tags = (genAttrs [ "html" "head" "body" "div" "p" "a" ] tag); + tags = (genAttrs tag [ "html" "head" "body" "div" "p" "a" ]); in tags // { inherit tag; diff --git a/utils.nix b/utils.nix new file mode 100644 index 0000000..1d39851 --- /dev/null +++ b/utils.nix @@ -0,0 +1,30 @@ +let + inherit (builtins) isAttrs isList map any concatMap concatStringsSep listToAttrs; + + mapAttrsToList = f: attrs: map (name: f name attrs.${name}) (builtins.attrNames attrs); +in +{ + inherit mapAttrsToList; + + recursiveAttrPaths = set: + let + flattenIfHasList = x: + if (isList x) && (any isList x) + then concatMap flattenIfHasList x + else [ x ]; + + recurse = path: set: + let + g = + name: value: + if isAttrs value + then recurse (path ++ [ name ]) value + else path ++ [ name ]; + in + mapAttrsToList g set; + in + flattenIfHasList (recurse [ ] set); + + concatStrings = concatStringsSep ""; + genAttrs = f: names: listToAttrs (map (n: { name = n; value = (f n); }) names); +} // builtins