Skip to content

Commit

Permalink
flake.nix: convert Nix configuration to flake
Browse files Browse the repository at this point in the history
  • Loading branch information
zombiezen committed Jun 6, 2023
1 parent e7be8bf commit 02b3a20
Show file tree
Hide file tree
Showing 4 changed files with 277 additions and 69 deletions.
2 changes: 2 additions & 0 deletions .envrc
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
# shellcheck shell=bash
use flake
156 changes: 156 additions & 0 deletions flake.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

109 changes: 109 additions & 0 deletions flake.nix
Original file line number Diff line number Diff line change
@@ -0,0 +1,109 @@
{
description = "gg-scm.io/pkg/git Go package";

inputs = {
nixpkgs.url = "nixpkgs";
nixpkgs-git_2_17_1 = {
url = "nixpkgs/9db1f486e15107e417b63119ad5e1917ee126599";
flake = false;
};
nixpkgs-git_2_21_0 = {
url = "nixpkgs/fc917e5346eb7e8858a67dd683be2e43a165918a";
flake = false;
};
nixpkgs-git_2_25_1 = {
url = "nixpkgs/b2a903a3e7ac9c038ed5f6a3ee744496622e0b65";
flake = false;
};
nixpkgs-git_2_27_0 = {
url = "nixpkgs/98c44f565746165a556953cda769d23d732466f4";
flake = false;
};

git_2_20_1 = {
url = "https://www.kernel.org/pub/software/scm/git/git-2.20.1.tar.xz";
flake = false;
};

flake-utils.url = "flake-utils";

flake-compat = {
url = "github:edolstra/flake-compat";
flake = false;
};
};

outputs = { self, nixpkgs, flake-utils, ... }@inputs:
flake-utils.lib.eachDefaultSystem (system:
let
pkgs = import nixpkgs { inherit system; };
in {
packages.git = pkgs.git;

packages.git_2_17_1 = self.lib.buildGit {
inherit pkgs;
packagePath = "${inputs.nixpkgs-git_2_17_1}/pkgs/applications/version-management/git-and-tools/git";
args = {
stdenv = pkgs.stdenv // { inherit (pkgs) lib; };
python = pkgs.python3;
};
};

packages.git_2_20_1 = (self.lib.buildGit {
inherit pkgs;
packagePath = "${inputs.nixpkgs-git_2_21_0}/pkgs/applications/version-management/git-and-tools/git";
args = {
stdenv = pkgs.stdenv // { inherit (pkgs) lib; };
python = pkgs.python3;
};
}).overrideAttrs (new: old: {
name = "git-2.20.1";
src = inputs.git_2_20_1;
});

packages.git_2_25_1 = self.lib.buildGit {
inherit pkgs;
packagePath = "${inputs.nixpkgs-git_2_25_1}/pkgs/applications/version-management/git-and-tools/git";
args = {
stdenv = pkgs.stdenv // { inherit (pkgs) lib; };
};
};

packages.git_2_27_0 = (self.lib.buildGit {
inherit pkgs;
packagePath = "${inputs.nixpkgs-git_2_27_0}/pkgs/applications/version-management/git-and-tools/git";
args = {
stdenv = pkgs.stdenv // { inherit (pkgs) lib; };
};
}).overrideAttrs (new: old: {
outputs = [ "out" ];
});

devShells.default = self.lib.mkShell { inherit pkgs; };
}
) // {
lib.mkShell = { pkgs, git ? pkgs.git }: pkgs.mkShell {
packages = [
pkgs.go_1_20
git
];
};

lib.buildGit = { pkgs, packagePath, args ? {} }:
let
defaultArgs = {
guiSupport = false;
sendEmailSupport = false;
svnSupport = false;
withManual = false;
perlLibs = [pkgs.perlPackages.LWP pkgs.perlPackages.URI pkgs.perlPackages.TermReadKey];
smtpPerlLibs = [];
};
called = pkgs.callPackage packagePath (defaultArgs // args);
in
called.overrideAttrs (new: old: {
doCheck = false;
doInstallCheck = false;
});
};
}
79 changes: 10 additions & 69 deletions shell.nix
Original file line number Diff line number Diff line change
@@ -1,69 +1,10 @@
{ pkgs ? import (fetchTarball "https://github.com/NixOS/nixpkgs/archive/7d0ed7f2e5aea07ab22ccb338d27fbe347ed2f11.tar.gz") {}
, gitVersion ? "latest"
}:

let
buildGit = nixpkgsCommit: relPath: args:
let
defaultArgs = {
guiSupport = false;
sendEmailSupport = false;
svnSupport = false;
withManual = false;
perlLibs = [pkgs.perlPackages.LWP pkgs.perlPackages.URI pkgs.perlPackages.TermReadKey];
smtpPerlLibs = [];
};
called = pkgs.callPackage
((fetchTarball "https://github.com/NixOS/nixpkgs/archive/${nixpkgsCommit}.tar.gz") + "/pkgs/applications/version-management/" + relPath)
(defaultArgs // args);
in
called.overrideAttrs (new: old: {
doCheck = false;
doInstallCheck = false;
});

gits = {
"2.17.1" = buildGit
"9db1f486e15107e417b63119ad5e1917ee126599"
"git-and-tools/git"
{
stdenv = pkgs.stdenv // { inherit (pkgs) lib; };
python = pkgs.python3;
};
"2.20.1" = (buildGit
"fc917e5346eb7e8858a67dd683be2e43a165918a" # Git 2.21.0
"git-and-tools/git"
{
stdenv = pkgs.stdenv // { inherit (pkgs) lib; };
python = pkgs.python3;
}).overrideAttrs (new: old: {
name = "git-2.20.1";
src = pkgs.fetchurl {
url = "https://www.kernel.org/pub/software/scm/git/git-2.20.1.tar.xz";
hash = "sha256-nS6R4vqi6mG6CnAgHQI7NvVNhGMUWRoALGEOoquBw+k=";
};
});
"2.25.1" = buildGit
"b2a903a3e7ac9c038ed5f6a3ee744496622e0b65"
"git-and-tools/git"
{
stdenv = pkgs.stdenv // { inherit (pkgs) lib; };
};
"2.27.0" = (buildGit
"98c44f565746165a556953cda769d23d732466f4"
"git-and-tools/git"
{
stdenv = pkgs.stdenv // { inherit (pkgs) lib; };
}).overrideAttrs (new: old: {
outputs = [ "out" ];
});
latest = pkgs.git;
};
in

pkgs.mkShell {
packages = [
pkgs.go_1_20
(builtins.getAttr gitVersion gits)
];
}
(import
(
let lock = builtins.fromJSON (builtins.readFile ./flake.lock); in
fetchTarball {
url = "https://github.com/edolstra/flake-compat/archive/${lock.nodes.flake-compat.locked.rev}.tar.gz";
sha256 = lock.nodes.flake-compat.locked.narHash;
}
)
{ src = ./.; }
).shellNix

0 comments on commit 02b3a20

Please sign in to comment.