Skip to content

Commit

Permalink
Merge pull request #94891 from gvolpe/development/tools/dconf2nix
Browse files Browse the repository at this point in the history
dconf2nix: init at 0.5.0
  • Loading branch information
cdepillabout committed Aug 10, 2020
2 parents 1f19197 + b987a31 commit 1ae9ecf
Show file tree
Hide file tree
Showing 6 changed files with 89 additions and 0 deletions.
6 changes: 6 additions & 0 deletions maintainers/maintainer-list.nix
Expand Up @@ -3230,6 +3230,12 @@
githubId = 6768842;
name = "Joris Guyonvarch";
};
gvolpe = {
email = "volpegabriel@gmail.com";
github = "gvolpe";
githubId = 443978;
name = "Gabriel Volpe";
};
hakuch = {
email = "hakuch@gmail.com";
github = "hakuch";
Expand Down
2 changes: 2 additions & 0 deletions pkgs/development/haskell-modules/non-hackage-packages.nix
Expand Up @@ -10,6 +10,8 @@ self: super: {
multi-ghc-travis = throw ("haskellPackages.multi-ghc-travis has been renamed"
+ " to haskell-ci, which is now on hackage");

dconf2nix = self.callPackage ../tools/haskell/dconf2nix/dconf2nix.nix { };

# https://github.com/channable/vaultenv/issues/1
vaultenv = self.callPackage ../tools/haskell/vaultenv { };

Expand Down
21 changes: 21 additions & 0 deletions pkgs/development/tools/haskell/dconf2nix/dconf2nix.nix
@@ -0,0 +1,21 @@
{ mkDerivation, base, containers, fetchgit, optparse-applicative
, parsec, stdenv, text
}:
mkDerivation {
pname = "dconf2nix";
version = "0.0.5";
src = fetchgit {
url = "https://github.com/gvolpe/dconf2nix.git";
sha256 = "0immbx4bgfq3xmbbrpw441nx0sdpm4cp64s7qbvcbvllp4gbivpg";
rev = "848ff9966db21c66e61a19c04ab6dfc9270eb78e";
fetchSubmodules = true;
};
isLibrary = true;
isExecutable = true;
libraryHaskellDepends = [
base containers optparse-applicative parsec text
];
executableHaskellDepends = [ base ];
description = "Convert dconf files to Nix, as expected by Home Manager";
license = stdenv.lib.licenses.asl20;
}
32 changes: 32 additions & 0 deletions pkgs/development/tools/haskell/dconf2nix/default.nix
@@ -0,0 +1,32 @@
{ haskell, haskellPackages, lib, runCommand }:

let
dconf2nix =
haskell.lib.justStaticExecutables
(haskell.lib.overrideCabal haskellPackages.dconf2nix (oldAttrs: {
maintainers = (oldAttrs.maintainers or []) ++ [
lib.maintainers.gvolpe
];
}));
in

dconf2nix.overrideAttrs (oldAttrs: {
passthru = (oldAttrs.passthru or {}) // {
updateScript = ./update.sh;

# These tests can be run with the following command.
#
# $ nix-build -A dconf2nix.passthru.tests
tests =
runCommand
"dconf2nix-tests"
{
nativeBuildInputs = [
dconf2nix
];
}
''
dconf2nix > $out
'';
};
})
26 changes: 26 additions & 0 deletions pkgs/development/tools/haskell/dconf2nix/update.sh
@@ -0,0 +1,26 @@
#!/usr/bin/env nix-shell
#!nix-shell -i bash -p cabal2nix curl jq
#
# This script will update the dconf2nix 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 )"

# dconf2nix derivation created with cabal2nix.
dconf2nix_derivation_file="${script_dir}/dconf2nix.nix"

# This is the current revision of dconf2nix in Nixpkgs.
old_version="$(sed -En 's/.*\bversion = "(.*?)".*/\1/p' "$dconf2nix_derivation_file")"

# This is the latest release version of dconf2nix on GitHub.
new_version=$(curl --silent "https://api.github.com/repos/gvolpe/dconf2nix/releases" | jq '.[0].tag_name' --raw-output)

echo "Updating dconf2nix from old version $old_version to new version $new_version."
echo "Running cabal2nix and outputting to ${dconf2nix_derivation_file}..."

cabal2nix --revision "$new_version" "https://github.com/gvolpe/dconf2nix.git" > "$dconf2nix_derivation_file"

echo "Finished."
2 changes: 2 additions & 0 deletions pkgs/top-level/all-packages.nix
Expand Up @@ -2931,6 +2931,8 @@ in

dclxvi = callPackage ../development/libraries/dclxvi { };

dconf2nix = callPackage ../development/tools/haskell/dconf2nix { };

dcraw = callPackage ../tools/graphics/dcraw { };

dcfldd = callPackage ../tools/system/dcfldd { };
Expand Down

0 comments on commit 1ae9ecf

Please sign in to comment.