From 0a64bfb3c770250f08cf57365ef9981a883cb0ed Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E0=B9=82=E0=B8=97=E0=B8=AA=E0=B8=BA=E0=B8=95=E0=B8=B1?= =?UTF-8?q?=E0=B8=A5?= Date: Fri, 24 Jan 2025 00:10:53 +0700 Subject: [PATCH] nix flake refactor: avoid ``with lib;`` & use ``lib.optional*`` Upstream Nixpkgs has been pushing the style of removing ``with lib;`` with the reasoning of clarity around where variables in scope come that hurt readability & static analysis[*]. While on the topic of ``lib``, introduce ``lib.optional`` & ``lib.optionalString`` in a few more places to tidy up the code while using common library patterns. .. [*] https://nix.dev/guides/best-practices#with-scopes Format: text/x-rst --- flake.nix | 30 ++++++++++++++++-------------- 1 file changed, 16 insertions(+), 14 deletions(-) diff --git a/flake.nix b/flake.nix index ac991cf5d45..17dee810cbf 100644 --- a/flake.nix +++ b/flake.nix @@ -10,32 +10,34 @@ in { nixosModule = { config, ... }: - with nixpkgs.lib; let + inherit (nixpkgs) lib; cfg = config.networking.stevenBlackHosts; - alternatesList = (if cfg.blockFakenews then [ "fakenews" ] else []) ++ - (if cfg.blockGambling then [ "gambling" ] else []) ++ - (if cfg.blockPorn then [ "porn" ] else []) ++ - (if cfg.blockSocial then [ "social" ] else []); + alternatesList = + (lib.optional cfg.blockFakenews "fakenews") + ++ (lib.optional cfg.blockGambling "gambling") + ++ (lib.optional cfg.blockPorn "porn") + ++ (lib.optional cfg.blockSocial "social"); alternatesPath = "alternates/" + builtins.concatStringsSep "-" alternatesList + "/"; in { options.networking.stevenBlackHosts = { - enable = mkEnableOption "Steven Black's hosts file"; - enableIPv6 = mkEnableOption "IPv6 rules" // { + enable = lib.mkEnableOption "Steven Black's hosts file"; + enableIPv6 = lib.mkEnableOption "IPv6 rules" // { default = config.networking.enableIPv6; }; - blockFakenews = mkEnableOption "fakenews hosts entries"; - blockGambling = mkEnableOption "gambling hosts entries"; - blockPorn = mkEnableOption "porn hosts entries"; - blockSocial = mkEnableOption "social hosts entries"; + blockFakenews = lib.mkEnableOption "fakenews hosts entries"; + blockGambling = lib.mkEnableOption "gambling hosts entries"; + blockPorn = lib.mkEnableOption "porn hosts entries"; + blockSocial = lib.mkEnableOption "social hosts entries"; }; - config = mkIf cfg.enable { + config = lib.mkIf cfg.enable { networking.extraHosts = let - orig = builtins.readFile ("${self}/" + (if alternatesList != [] then alternatesPath else "") + "hosts"); + orig = builtins.readFile ("${self}/" + (lib.optionalString (alternatesList != []) alternatesPath) + "hosts"); ipv6 = builtins.replaceStrings [ "0.0.0.0" ] [ "::" ] orig; - in orig + (optionalString cfg.enableIPv6 ("\n" + ipv6)); + in + orig + (lib.optionalString cfg.enableIPv6 ("\n" + ipv6)); }; };