diff --git a/.gitignore b/.gitignore
index b3472a3..8523e9e 100644
--- a/.gitignore
+++ b/.gitignore
@@ -5,3 +5,4 @@ _test/
 *.swp
 *~
 *.out
+rbot.conf
diff --git a/Makefile b/Makefile
index e34f6e3..8751f02 100644
--- a/Makefile
+++ b/Makefile
@@ -10,3 +10,12 @@ GOFILES=\
 
 include $(GOROOT)/src/Make.cmd
 
+all: rbot.conf
+
+rbot.conf: rbot.conf.example
+	@if [ -f $@ ] ; then \
+		echo "rbot.conf exists, but rbot.conf.example is newer." ; \
+	else \
+		echo cp $< $@ ; \
+		cp $< $@ ; \
+	fi
diff --git a/rbot.conf.example b/rbot.conf.example
new file mode 100644
index 0000000..923440c
--- /dev/null
+++ b/rbot.conf.example
@@ -0,0 +1,7 @@
+[DEFAULT]
+server: irc.rizon.net
+nick: rbot
+user: rbot
+ssl: false
+
+[#raylu]
diff --git a/rbot.go b/rbot.go
index d80cece..1e78a2f 100644
--- a/rbot.go
+++ b/rbot.go
@@ -3,17 +3,24 @@ package main
 import (
 	"irc"
 	"fmt"
+	"os"
+	"github.com/kless/goconfig/config"
 )
 
-func main() {
-	server := "irc.rizon.net"
-	channel := "#vn-meta"
-	ssl := false
+var nick, server, user string
+var ssl bool
+var channels []string
 
-	c := irc.New("raylu[BOT]", "rayluBOT", "rayluBOT")
+func main() {
+	parseConfig("rbot.conf")
+
+	c := irc.New(nick, user, user)
 	c.AddHandler("connected",
 		func(conn *irc.Conn, line *irc.Line) {
-			conn.Join(channel)
+			fmt.Println("Connected!")
+			for _, c := range channels {
+				conn.Join(c)
+			}
 		})
 
 	for {
@@ -22,9 +29,37 @@ func main() {
 			fmt.Printf("Connection error: %s\n", err)
 			break
 		}
-		fmt.Println("Connected!")
 		for err := range c.Err {
 			fmt.Printf("goirc error: %s\n", err)
 		}
 	}
 }
+
+func parseConfig(confFile string) {
+	conf, err := config.ReadDefault(confFile)
+	if (err != nil) {
+		fmt.Printf("Config error: %s\n", err); os.Exit(1)
+	}
+
+	server, err = conf.String("DEFAULT", "server")
+	if err != nil { fmt.Printf("Config error: %s\n", err); os.Exit(1) }
+
+	nick, err = conf.String("DEFAULT", "nick")
+	if err != nil { fmt.Printf("Config error: %s\n", err); os.Exit(1) }
+
+	user, err = conf.String("DEFAULT", "user")
+	if err != nil { fmt.Printf("Config error: %s\n", err); os.Exit(1) }
+
+	ssl, err = conf.Bool("DEFAULT", "ssl")
+	if err != nil { fmt.Printf("Config error: %s\n", err); os.Exit(1) }
+
+	sections := conf.Sections()
+	channels = make([]string, len(sections)-1)
+	i := 0
+	for _, s := range sections {
+		if (s != "DEFAULT") {
+			channels[i] = s
+			i++
+		}
+	}
+}