diff --git a/username/username-tests.ts b/username/username-tests.ts
new file mode 100644
index 000000000..46265958b
--- /dev/null
+++ b/username/username-tests.ts
@@ -0,0 +1,10 @@
+///
+
+import username = require("username");
+
+username(function(err, username) {
+ err === new Error();
+ username === "string";
+});
+
+username.sync() === "string";
diff --git a/username/username.d.ts b/username/username.d.ts
new file mode 100644
index 000000000..5784f46ff
--- /dev/null
+++ b/username/username.d.ts
@@ -0,0 +1,27 @@
+// Type definitions for username v1.0.1
+// Project: https://www.npmjs.com/package/username
+// Definitions by: Klaus Reimer
+// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped
+
+declare module "username" {
+ /**
+ * Tries to get the username from the LOGNAME, USER, LNAME or USERNAME environment variables.
+ * Falls back to `id -un` on OS X / Linux and `whoami` on Windows in the rare case none of the environment
+ * variables are set. The result is cached.
+ *
+ * @param callback The callback function to call asynchronously with the result.
+ */
+ function username(callback: (err: Error, result: string) => void): void;
+
+ module username {
+ /**
+ * Tries to get the username from the LOGNAME, USER, LNAME or USERNAME environment variables. Falls back
+ * to returning an empty string in the reare case none of the environment variables are set.
+ *
+ * @return The username or empty string if not found.
+ */
+ function sync(): string;
+ }
+
+ export = username;
+}