diff options
-rw-r--r-- | maintainers/team-list.nix | 14 | ||||
-rw-r--r-- | pkgs/by-name/ni/nixfmt-rfc-style/date.txt | 1 | ||||
-rw-r--r-- | pkgs/by-name/ni/nixfmt-rfc-style/generated-package.nix | 27 | ||||
-rw-r--r-- | pkgs/by-name/ni/nixfmt-rfc-style/package.nix | 32 | ||||
-rwxr-xr-x | pkgs/by-name/ni/nixfmt-rfc-style/update.sh | 33 |
5 files changed, 107 insertions, 0 deletions
diff --git a/maintainers/team-list.nix b/maintainers/team-list.nix index c5b37437ddb2..0a44b520a4d1 100644 --- a/maintainers/team-list.nix +++ b/maintainers/team-list.nix @@ -307,6 +307,20 @@ with lib.maintainers; { shortName = "Flying Circus employees"; }; + formatter = { + members = [ + piegames + infinisil + das_j + tomberek + _0x4A6F + # Not in the maintainer list + # Sereja313 + ]; + scope = "Tentative Nix formatter team to be established in https://github.com/NixOS/rfcs/pull/166"; + shortName = "Nix formatter team"; + }; + freedesktop = { members = [ jtojnar ]; scope = "Maintain Freedesktop.org packages for graphical desktop."; diff --git a/pkgs/by-name/ni/nixfmt-rfc-style/date.txt b/pkgs/by-name/ni/nixfmt-rfc-style/date.txt new file mode 100644 index 000000000000..c024acd63a04 --- /dev/null +++ b/pkgs/by-name/ni/nixfmt-rfc-style/date.txt @@ -0,0 +1 @@ +2024-01-15 diff --git a/pkgs/by-name/ni/nixfmt-rfc-style/generated-package.nix b/pkgs/by-name/ni/nixfmt-rfc-style/generated-package.nix new file mode 100644 index 000000000000..1604555b3b72 --- /dev/null +++ b/pkgs/by-name/ni/nixfmt-rfc-style/generated-package.nix @@ -0,0 +1,27 @@ +# This file has been autogenerate with cabal2nix. +# Update via ./update.sh +{ mkDerivation, base, cmdargs, directory, fetchzip, filepath, lib +, megaparsec, mtl, parser-combinators, safe-exceptions, scientific +, text, transformers, unix +}: +mkDerivation { + pname = "nixfmt"; + version = "0.5.0"; + src = fetchzip { + url = "https://github.com/piegamesde/nixfmt/archive/1eff7a84ac82fbebb5f586244f1c80e1fcc4f494.tar.gz"; + sha256 = "1pg876sr58h7v087kbjsnfr4pzvqpwzibl06w2468qs1sywmd283"; + }; + isLibrary = true; + isExecutable = true; + libraryHaskellDepends = [ + base megaparsec mtl parser-combinators scientific text transformers + ]; + executableHaskellDepends = [ + base cmdargs directory filepath safe-exceptions text unix + ]; + jailbreak = true; + homepage = "https://github.com/serokell/nixfmt"; + description = "An opinionated formatter for Nix"; + license = lib.licenses.mpl20; + mainProgram = "nixfmt"; +} diff --git a/pkgs/by-name/ni/nixfmt-rfc-style/package.nix b/pkgs/by-name/ni/nixfmt-rfc-style/package.nix new file mode 100644 index 000000000000..a11e2d29ff69 --- /dev/null +++ b/pkgs/by-name/ni/nixfmt-rfc-style/package.nix @@ -0,0 +1,32 @@ +{ + haskell, + haskellPackages, + lib, + runCommand, + nixfmt-rfc-style, +}: +let + inherit (haskell.lib.compose) overrideCabal justStaticExecutables; + + overrides = { + version = "unstable-${lib.fileContents ./date.txt}"; + + passthru.updateScript = ./update.sh; + + maintainers = lib.teams.formatter.members; + + # These tests can be run with the following command. + # + # $ nix-build -A nixfmt-rfc-style.tests + passthru.tests = + runCommand "nixfmt-rfc-style-tests" { nativeBuildInputs = [ nixfmt-rfc-style ]; } + '' + nixfmt --version > $out + ''; + }; + raw-pkg = haskellPackages.callPackage ./generated-package.nix { }; +in +lib.pipe raw-pkg [ + (overrideCabal overrides) + justStaticExecutables +] diff --git a/pkgs/by-name/ni/nixfmt-rfc-style/update.sh b/pkgs/by-name/ni/nixfmt-rfc-style/update.sh new file mode 100755 index 000000000000..c70a6e88e788 --- /dev/null +++ b/pkgs/by-name/ni/nixfmt-rfc-style/update.sh @@ -0,0 +1,33 @@ +#!/usr/bin/env nix-shell +#!nix-shell -i bash -p cabal2nix curl jq +# +# This script will update the nixfmt-rfc-style derivation to the latest version using +# cabal2nix. + +set -eo pipefail + +# This is the directory of this update.sh script. +script_dir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )" + +derivation_file="${script_dir}/generated-package.nix" +date_file="${script_dir}/date.txt" + +# This is the latest version of nixfmt-rfc-style branch on GitHub. +new_version=$(curl --silent https://api.github.com/repos/piegamesde/nixfmt/git/refs/heads/rfc101-style | jq '.object.sha' --raw-output) +new_date=$(curl --silent https://api.github.com/repos/piegamesde/nixfmt/git/commits/"$new_version" | jq '.committer.date' --raw-output) + +echo "Updating nixfmt-rfc-style to version $new_date." +echo "Running cabal2nix and outputting to ${derivation_file}..." + +cat > "$derivation_file" << EOF +# This file has been autogenerate with cabal2nix. +# Update via ./update.sh +EOF + +cabal2nix --jailbreak \ + "https://github.com/piegamesde/nixfmt/archive/${new_version}.tar.gz" \ + >> "$derivation_file" + +date --date="$new_date" -I > "$date_file" + +echo "Finished." |