about summary refs log tree commit diff
path: root/users/Profpatsch/nixpkgs-rewriter
diff options
context:
space:
mode:
Diffstat (limited to 'users/Profpatsch/nixpkgs-rewriter')
-rw-r--r--users/Profpatsch/nixpkgs-rewriter/MetaStdenvLib.hs80
-rw-r--r--users/Profpatsch/nixpkgs-rewriter/default.nix148
2 files changed, 0 insertions, 228 deletions
diff --git a/users/Profpatsch/nixpkgs-rewriter/MetaStdenvLib.hs b/users/Profpatsch/nixpkgs-rewriter/MetaStdenvLib.hs
deleted file mode 100644
index 3ed96a7b6eac..000000000000
--- a/users/Profpatsch/nixpkgs-rewriter/MetaStdenvLib.hs
+++ /dev/null
@@ -1,80 +0,0 @@
-{-# LANGUAGE PartialTypeSignatures #-}
-{-# LANGUAGE LambdaCase #-}
-{-# LANGUAGE OverloadedStrings #-}
-{-# LANGUAGE NamedFieldPuns #-}
-import Nix.Parser
-import Nix.Expr.Types
-import Nix.Expr.Types.Annotated
-import System.Environment (getArgs)
-import System.Exit (die)
-import Data.Fix (Fix(..))
-import qualified Data.Text as Text
-import qualified Data.ByteString.Lazy.Char8 as BL
-import qualified Data.Aeson as A
-import qualified Data.Aeson.Encoding as A
-import Data.Function ((&))
-import qualified System.IO as IO
-import qualified Text.Megaparsec.Pos as MP
-
-main = do
-  (nixFile:_) <- getArgs
-  (parseNixFileLoc nixFile :: IO _) >>= \case
-    Failure err -> do
-      ePutStrLn $ show err
-      die "oh no"
-    Success expr -> do
-      case snd $ match expr of
-        NoArguments -> do
-          ePutStrLn $ "NoArguments in " <> nixFile
-          printPairs mempty
-        YesLib vars -> do
-          ePutStrLn $ "lib in " <> show vars <> " in " <> nixFile
-          printPairs mempty
-        NoLib vars srcSpan -> do
-          ePutStrLn $ nixFile <> " needs lib added"
-          printPairs
-            $ "fileName" A..= nixFile
-            <> "fromLine" A..= (srcSpan & spanBegin & sourceLine)
-            <> "fromColumn" A..= (srcSpan & spanBegin & sourceColumn)
-            <> "toLine" A..= (srcSpan & spanEnd & sourceLine)
-            <> "toColumn" A..= (srcSpan & spanEnd & sourceColumn)
-
-printPairs pairs = BL.putStrLn $ A.encodingToLazyByteString $ A.pairs pairs
-
-ePutStrLn = IO.hPutStrLn IO.stderr
-
-data Descend = YesDesc | NoDesc
-  deriving Show
-data Matched =  NoArguments | NoLib [VarName] SrcSpan | YesLib [VarName]
-  deriving Show
-
-match :: Fix (Compose (Ann SrcSpan) NExprF) -> (Descend, Matched)
-match = \case
-  (AnnE outerSpan (NAbs (ParamSet params _ _) (AnnE innerSpan _))) -> (NoDesc,
-    let vars = map fst params in
-    case (any (== "lib") vars) of
-      True -> YesLib vars
-      False ->
-          -- The span of the arglist is from the beginning of the match
-          -- to the beginning of the inner expression
-          let varSpan = SrcSpan
-                { spanBegin = outerSpan & spanBegin
-                -- -1 to prevent the spans from overlapping
-                , spanEnd = sourcePosMinus1 (innerSpan & spanBegin) }
-          in NoLib vars varSpan)
-  _ -> (NoDesc, NoArguments)
-
--- | Remove one from a source positon.
---
--- That means if the current position is at the very beginning of a line,
--- jump to the previous line.
-sourcePosMinus1 :: SourcePos -> SourcePos
-sourcePosMinus1 src@(SourcePos { sourceLine, sourceColumn }) =
-  let
-    col = MP.mkPos $ max (MP.unPos sourceColumn - 1) 1
-    line = MP.mkPos $ case MP.unPos sourceColumn of
-      1 -> max (MP.unPos sourceLine - 1) 1
-      _ -> MP.unPos sourceLine
-  in src
-    { sourceLine = line
-    , sourceColumn = col }
diff --git a/users/Profpatsch/nixpkgs-rewriter/default.nix b/users/Profpatsch/nixpkgs-rewriter/default.nix
deleted file mode 100644
index 0740a870aa4a..000000000000
--- a/users/Profpatsch/nixpkgs-rewriter/default.nix
+++ /dev/null
@@ -1,148 +0,0 @@
-{ depot, pkgs, ... }:
-let
-  inherit (depot.nix)
-    writeExecline
-    ;
-  inherit (depot.users.Profpatsch.lib)
-    debugExec
-    ;
-
-  bins = depot.nix.getBins pkgs.coreutils [ "head" "shuf" ]
-    // depot.nix.getBins pkgs.jq [ "jq" ]
-    // depot.nix.getBins pkgs.findutils [ "xargs" ]
-    // depot.nix.getBins pkgs.gnused [ "sed" ]
-  ;
-
-  export-json-object = pkgs.writers.writePython3 "export-json-object" { } ''
-    import json
-    import sys
-    import os
-
-    d = json.load(sys.stdin)
-
-    if d == {}:
-        sys.exit(0)
-
-    for k, v in d.items():
-        os.environ[k] = str(v)
-
-    os.execvp(sys.argv[1], sys.argv[1:])
-  '';
-
-  meta-stdenv-lib = pkgs.writers.writeHaskell "meta-stdenv-lib"
-    {
-      libraries = [
-        pkgs.haskellPackages.hnix
-        pkgs.haskellPackages.aeson
-      ];
-    } ./MetaStdenvLib.hs;
-
-  replace-between-lines = writeExecline "replace-between-lines" { readNArgs = 1; } [
-    "importas"
-    "-ui"
-    "file"
-    "fileName"
-    "importas"
-    "-ui"
-    "from"
-    "fromLine"
-    "importas"
-    "-ui"
-    "to"
-    "toLine"
-    "if"
-    [ depot.tools.eprintf "%s-%s\n" "$from" "$to" ]
-    (debugExec "adding lib")
-    bins.sed
-    "-e"
-    "\${from},\${to} \${1}"
-    "-i"
-    "$file"
-  ];
-
-  add-lib-if-necessary = writeExecline "add-lib-if-necessary" { readNArgs = 1; } [
-    "pipeline"
-    [ meta-stdenv-lib "$1" ]
-    export-json-object
-    # first replace any stdenv.lib mentions in the arg header
-    # if this is not done, the replace below kills these.
-    # Since we want it anyway ultimately, let’s do it here.
-    "if"
-    [ replace-between-lines "s/stdenv\.lib/lib/" ]
-    # then add the lib argument
-    # (has to be before stdenv, otherwise default arguments might be in the way)
-    replace-between-lines
-    "s/stdenv/lib, stdenv/"
-  ];
-
-  metaString = ''meta = with stdenv.lib; {'';
-
-  replace-stdenv-lib = pkgs.writers.writeBash "replace-stdenv-lib" ''
-    set -euo pipefail
-    sourceDir="$1"
-    for file in $(
-      ${pkgs.ripgrep}/bin/rg \
-        --files-with-matches \
-        --fixed-strings \
-        -e '${metaString}' \
-        "$sourceDir"
-    )
-    do
-      echo "replacing stdenv.lib meta in $file" >&2
-      ${bins.sed} -e '/${metaString}/ s/stdenv.lib/lib/' \
-          -i "$file"
-      ${add-lib-if-necessary} "$file"
-    done
-  '';
-
-  instantiate-nixpkgs-randomly = writeExecline "instantiate-nixpkgs-randomly" { readNArgs = 1; } [
-    "export"
-    "NIXPKGS_ALLOW_BROKEN"
-    "1"
-    "export"
-    "NIXPKGS_ALLOW_UNFREE"
-    "1"
-    "export"
-    "NIXPKGS_ALLOW_INSECURE"
-    "1"
-    "export"
-    "NIXPKGS_ALLOW_UNSUPPORTED_SYSTEM"
-    "1"
-    "pipeline"
-    [
-      "nix"
-      "eval"
-      "--raw"
-      ''(
-          let pkgs = import ''${1} {};
-          in builtins.toJSON (builtins.attrNames pkgs)
-        )''
-    ]
-    "pipeline"
-    [ bins.jq "-r" ".[]" ]
-    "pipeline"
-    [ bins.shuf ]
-    "pipeline"
-    [ bins.head "-n" "1000" ]
-    bins.xargs
-    "-I"
-    "{}"
-    "-n1"
-    "if"
-    [ depot.tools.eprintf "instantiating %s\n" "{}" ]
-    "nix-instantiate"
-    "$1"
-    "-A"
-    "{}"
-  ];
-
-in
-depot.nix.readTree.drvTargets {
-  inherit
-    instantiate-nixpkgs-randomly
-    # requires hnix, which we don’t want in tvl for now
-    # uncomment manually if you want to use it.
-    #   meta-stdenv-lib
-    #   replace-stdenv-lib
-    ;
-}