Dogecoin Ubuntu Live CD Installer

I spent a little time today trying to come up with a single tar file and script to install dogecoin-qt on an Ubuntu live CD. This will let fellow shibes make offline wallets for better security!

You can get the code and instructions from my github here.

This version is created for 64-bit Ubuntu 12.04 Live CD. I likely have too many deps in the tar file as it is quite huge(~80MB), but it works! I'll work on shaving it down soon.

Here is what it looks like in action:

[shibe@ubuntu mnt]$ sudo tar -xvf
dogecoin-qt-1.5-ubuntu-12.04-Live-Install.tar  
dogecoin-qt-1.5-ubuntu-12.04-Live-Install/

dogecoin-qt-1.5-ubuntu-12.04-Live-Install/libqt4-xml_4%3a4.8.1-0ubuntu4.6_amd64.deb

dogecoin-qt-1.5-ubuntu-12.04-Live-Install/libx11-6_2%3a1.4.99.1-0ubuntu2.2_amd64.deb

dogecoin-qt-1.5-ubuntu-12.04-Live-Install/libssl1.0.0_1.0.1-4ubuntu5.11_amd64.deb

dogecoin-qt-1.5-ubuntu-12.04-Live-Install/libboost-system1.48.0_1.48.0-3_amd64.deb

dogecoin-qt-1.5-ubuntu-12.04-Live-Install/libdrm-dev_2.4.46-1ubuntu0.0.0.1_amd64.deb

dogecoin-qt-1.5-ubuntu-12.04-Live-Install/libboost-system1.48-dev_1.48.0-3_amd64.deb

dogecoin-qt-1.5-ubuntu-12.04-Live-Install/libqtwebkit-dev_2.2.1-1ubuntu4_amd64.deb

dogecoin-qt-1.5-ubuntu-12.04-Live-Install/libqt4-scripttools_4%3a4.8.1-0ubuntu4.6_amd64.deb

dogecoin-qt-1.5-ubuntu-12.04-Live-Install/x11proto-input-dev_2.3-1~precise1_all.deb

dogecoin-qt-1.5-ubuntu-12.04-Live-Install/gcc-4.4_4.4.7-1ubuntu2_amd64.deb

dogecoin-qt-1.5-ubuntu-12.04-Live-Install/qt4-linguist-tools_4%3a4.8.1-0ubuntu4.6_amd64.deb

dogecoin-qt-1.5-ubuntu-12.04-Live-Install/libstdc++6-4.6-dev_4.6.3-1ubuntu5_amd64.deb

dogecoin-qt-1.5-ubuntu-12.04-Live-Install/libdrm-intel1_2.4.46-1ubuntu0.0.0.1_amd64.deb

dogecoin-qt-1.5-ubuntu-12.04-Live-Install/libalgorithm-merge-perl_0.08-2_all.deb

dogecoin-qt-1.5-ubuntu-12.04-Live-Install/libdrm2_2.4.46-1ubuntu0.0.0.1_amd64.deb

dogecoin-qt-1.5-ubuntu-12.04-Live-Install/libdb++-dev_5.1.4ubuntu1_amd64.deb

dogecoin-qt-1.5-ubuntu-12.04-Live-Install/libdb5.1++-dev_5.1.25-11build1_amd64.deb

dogecoin-qt-1.5-ubuntu-12.04-Live-Install/libglu1-mesa_8.0.4-0ubuntu0.7_amd64.deb

dogecoin-qt-1.5-ubuntu-12.04-Live-Install/x11proto-kb-dev_1.0.5-2_all.deb

dogecoin-qt-1.5-ubuntu-12.04-Live-Install/libxcb1-dev_1.8.1-1ubuntu0.2_amd64.deb

dogecoin-qt-1.5-ubuntu-12.04-Live-Install/g++-4.6_4.6.3-1ubuntu5_amd64.deb

dogecoin-qt-1.5-ubuntu-12.04-Live-Install/libqt4-qt3support_4%3a4.8.1-0ubuntu4.6_amd64.deb

dogecoin-qt-1.5-ubuntu-12.04-Live-Install/libqtcore4_4%3a4.8.1-0ubuntu4.6_amd64.deb

dogecoin-qt-1.5-ubuntu-12.04-Live-Install/libboost-filesystem1.48-dev_1.48.0-3_amd64.deb

dogecoin-qt-1.5-ubuntu-12.04-Live-Install/x11proto-xext-dev_7.2.0-3_all.deb

dogecoin-qt-1.5-ubuntu-12.04-Live-Install/libboost-date-time1.48-dev_1.48.0-3_amd64.deb

dogecoin-qt-1.5-ubuntu-12.04-Live-Install/g++-4.4_4.4.7-1ubuntu2_amd64.deb

dogecoin-qt-1.5-ubuntu-12.04-Live-Install/libqt4-sql_4%3a4.8.1-0ubuntu4.6_amd64.deb

dogecoin-qt-1.5-ubuntu-12.04-Live-Install/qt4-qmake_4%3a4.8.1-0ubuntu4.6_amd64.deb

dogecoin-qt-1.5-ubuntu-12.04-Live-Install/zlib1g-dev_1%3a1.2.3.4.dfsg-3ubuntu4_amd64.deb

dogecoin-qt-1.5-ubuntu-12.04-Live-Install/libtimedate-perl_1.2000-1_all.deb

dogecoin-qt-1.5-ubuntu-12.04-Live-Install/libkms1_2.4.46-1ubuntu0.0.0.1_amd64.deb

dogecoin-qt-1.5-ubuntu-12.04-Live-Install/libqt4-script_4%3a4.8.1-0ubuntu4.6_amd64.deb

dogecoin-qt-1.5-ubuntu-12.04-Live-Install/cpp-4.4_4.4.7-1ubuntu2_amd64.deb

dogecoin-qt-1.5-ubuntu-12.04-Live-Install/libx11-doc_2%3a1.4.99.1-0ubuntu2.2_all.deb

dogecoin-qt-1.5-ubuntu-12.04-Live-Install/libgl1-mesa-dev_8.0.4-0ubuntu0.7_amd64.deb

dogecoin-qt-1.5-ubuntu-12.04-Live-Install/x11proto-core-dev_7.0.22-1ubuntu0.1_all.deb

dogecoin-qt-1.5-ubuntu-12.04-Live-Install/libqt4-svg_4%3a4.8.1-0ubuntu4.6_amd64.deb

dogecoin-qt-1.5-ubuntu-12.04-Live-Install/libxext-dev_2%3a1.3.0-3ubuntu0.1_amd64.deb

dogecoin-qt-1.5-ubuntu-12.04-Live-Install/libqt4-designer_4%3a4.8.1-0ubuntu4.6_amd64.deb

dogecoin-qt-1.5-ubuntu-12.04-Live-Install/libpthread-stubs0_0.3-3_amd64.deb

dogecoin-qt-1.5-ubuntu-12.04-Live-Install/libxau-dev_1%3a1.0.6-4_amd64.deb

dogecoin-qt-1.5-ubuntu-12.04-Live-Install/libboost-serialization1.48.0_1.48.0-3_amd64.deb

dogecoin-qt-1.5-ubuntu-12.04-Live-Install/libqtgui4_4%3a4.8.1-0ubuntu4.6_amd64.deb

dogecoin-qt-1.5-ubuntu-12.04-Live-Install/mesa-common-dev_8.0.4-0ubuntu0.7_amd64.deb  
dogecoin-qt-1.5-ubuntu-12.04-Live-Install/xtrans-dev_1.2.6-2_all.deb

dogecoin-qt-1.5-ubuntu-12.04-Live-Install/libdrm-radeon1_2.4.46-1ubuntu0.0.0.1_amd64.deb

dogecoin-qt-1.5-ubuntu-12.04-Live-Install/libboost-date-time1.48.0_1.48.0-3_amd64.deb  
dogecoin-qt-1.5-ubuntu-12.04-Live-Install/dogecoin-master-1.5.zip

dogecoin-qt-1.5-ubuntu-12.04-Live-Install/libx11-dev_2%3a1.4.99.1-0ubuntu2.2_amd64.deb

dogecoin-qt-1.5-ubuntu-12.04-Live-Install/libqt4-dev_4%3a4.8.1-0ubuntu4.6_amd64.deb

dogecoin-qt-1.5-ubuntu-12.04-Live-Install/libqt4-opengl-dev_4%3a4.8.1-0ubuntu4.6_amd64.deb

dogecoin-qt-1.5-ubuntu-12.04-Live-Install/libdrm-nouveau2_2.4.46-1ubuntu0.0.0.1_amd64.deb  
dogecoin-qt-1.5-ubuntu-12.04-Live-Install/j

dogecoin-qt-1.5-ubuntu-12.04-Live-Install/libpthread-stubs0-dev_0.3-3_amd64.deb

dogecoin-qt-1.5-ubuntu-12.04-Live-Install/libglu1-mesa-dev_8.0.4-0ubuntu0.7_amd64.deb

dogecoin-qt-1.5-ubuntu-12.04-Live-Install/libdrm-nouveau1a_2.4.46-1ubuntu0.0.0.1_amd64.deb

dogecoin-qt-1.5-ubuntu-12.04-Live-Install/libstdc++6-4.4-dev_4.4.7-1ubuntu2_amd64.deb

dogecoin-qt-1.5-ubuntu-12.04-Live-Install/dpkg-dev_1.16.1.2ubuntu7.2_all.deb  
dogecoin-qt-1.5-ubuntu-12.04-Live-Install/install.sh

dogecoin-qt-1.5-ubuntu-12.04-Live-Install/libdb5.1++_5.1.25-11build1_amd64.deb

dogecoin-qt-1.5-ubuntu-12.04-Live-Install/libqtwebkit4_2.2.1-1ubuntu4_amd64.deb

dogecoin-qt-1.5-ubuntu-12.04-Live-Install/libqt4-network_4%3a4.8.1-0ubuntu4.6_amd64.deb

dogecoin-qt-1.5-ubuntu-12.04-Live-Install/libalgorithm-diff-xs-perl_0.04-2build2_amd64.deb

dogecoin-qt-1.5-ubuntu-12.04-Live-Install/libqt4-help_4%3a4.8.1-0ubuntu4.6_amd64.deb

dogecoin-qt-1.5-ubuntu-12.04-Live-Install/libboost-thread1.48-dev_1.48.0-3_amd64.deb

dogecoin-qt-1.5-ubuntu-12.04-Live-Install/build-essential_11.5ubuntu2.1_amd64.deb

dogecoin-qt-1.5-ubuntu-12.04-Live-Install/libqt4-test_4%3a4.8.1-0ubuntu4.6_amd64.deb

dogecoin-qt-1.5-ubuntu-12.04-Live-Install/libqt4-sql-sqlite_4%3a4.8.1-0ubuntu4.6_amd64.deb

dogecoin-qt-1.5-ubuntu-12.04-Live-Install/libssl-doc_1.0.1-4ubuntu5.11_all.deb

dogecoin-qt-1.5-ubuntu-12.04-Live-Install/qdbus_4%3a4.8.1-0ubuntu4.6_amd64.deb

dogecoin-qt-1.5-ubuntu-12.04-Live-Install/libboost-chrono1.48.0_1.48.0-3_amd64.deb

dogecoin-qt-1.5-ubuntu-12.04-Live-Install/libxdmcp-dev_1%3a1.1.0-4_amd64.deb

dogecoin-qt-1.5-ubuntu-12.04-Live-Install/g++_4%3a4.6.3-1ubuntu5_amd64.deb

dogecoin-qt-1.5-ubuntu-12.04-Live-Install/libboost-serialization1.48-dev_1.48.0-3_amd64.deb

dogecoin-qt-1.5-ubuntu-12.04-Live-Install/libboost-filesystem1.48.0_1.48.0-3_amd64.deb

dogecoin-qt-1.5-ubuntu-12.04-Live-Install/libboost1.48-dev_1.48.0-3_amd64.deb

dogecoin-qt-1.5-ubuntu-12.04-Live-Install/libboost-chrono1.48-dev_1.48.0-3_amd64.deb

dogecoin-qt-1.5-ubuntu-12.04-Live-Install/libboost-program-options1.48.0_1.48.0-3_amd64.deb

dogecoin-qt-1.5-ubuntu-12.04-Live-Install/libdpkg-perl_1.16.1.2ubuntu7.2_all.deb

dogecoin-qt-1.5-ubuntu-12.04-Live-Install/libminiupnpc-dev_1.6-3ubuntu1_amd64.deb

dogecoin-qt-1.5-ubuntu-12.04-Live-Install/libqt4-xmlpatterns_4%3a4.8.1-0ubuntu4.6_amd64.deb

dogecoin-qt-1.5-ubuntu-12.04-Live-Install/libssl-dev_1.0.1-4ubuntu5.11_amd64.deb

dogecoin-qt-1.5-ubuntu-12.04-Live-Install/libqt4-dbus_4%3a4.8.1-0ubuntu4.6_amd64.deb

dogecoin-qt-1.5-ubuntu-12.04-Live-Install/libboost-thread1.48.0_1.48.0-3_amd64.deb

dogecoin-qt-1.5-ubuntu-12.04-Live-Install/libqt4-declarative_4%3a4.8.1-0ubuntu4.6_amd64.deb

dogecoin-qt-1.5-ubuntu-12.04-Live-Install/libalgorithm-diff-perl_1.19.02-2_all.deb

dogecoin-qt-1.5-ubuntu-12.04-Live-Install/gcc-4.4-base_4.4.7-1ubuntu2_amd64.deb

dogecoin-qt-1.5-ubuntu-12.04-Live-Install/xorg-sgml-doctools_1%3a1.10-1_all.deb

dogecoin-qt-1.5-ubuntu-12.04-Live-Install/libdb5.1-dev_5.1.25-11build1_amd64.deb

dogecoin-qt-1.5-ubuntu-12.04-Live-Install/libboost-program-options1.48-dev_1.48.0-3_amd64.deb

dogecoin-qt-1.5-ubuntu-12.04-Live-Install/libqt4-opengl_4%3a4.8.1-0ubuntu4.6_amd64.deb  
[shibe@ubuntu mnt]$ cd dogecoin-qt-1.5-ubuntu-12.04-Live-Install  
[shibe@ubuntu dogecoin-qt-1.5-ubuntu-12.04-Live-Install]$
./install.sh  
First step to the moon in(much time needed)  
3  
2  
1  
##Lots of stuff.. This will take a while.

Here is the install.sh script to install the deps, extract and compile the source code for dogecoin-qt.

[shibe@ubuntu dogecoin-qt-1.5-ubuntu-12.04-Live-Install]$ cat
install.sh

#!/bin/sh

#Check jpyth.com or github.com/jpyth for any updates should dogecoin-qt
have a newer version! To the moon!

echo "First step to the moon in(much time needed)"  
echo "3"  
sleep 1  
echo "2"  
sleep 1  
echo "1"  
sleep 1  
dpkg -i *deb && {  
echo "Files need"  
unzip dogecoin-master-1.5.zip && {  
cd dogecoin-master-1.5 && {  
echo "funny make"  
ls  
qmake && {  
echo "make time"  
ls  
make && {  
echo "Much Finish, 'cd dogecoin-master-1.5; ./dogecoin-qt' to run
dogecoin! To the moon!"  
} || {  
echo "Fail much make, much sad. Report logs above."  
}  
} || {  
echo "Fail much qmake, much sad. Report. "  
}  
} || {  
echo "Moving too hard"  
}  
} || {  
echo "Much weird, dogecoin-master-1.5.zip much sad"  
}  
} || {  
echo "dpkg no like, find a shibe to help with errors above!"  
}  
[shibe@ubuntu dogecoin-qt-1.5-ubuntu-12.04-Live-Install]$

Nothing special, just going through each step and checking return code on the prior step. Hopefully most of those error messages are never seen by anyone.

If you find any deps that are missing, or know of ones I can remove please let me know. I'll write up information about creating the live CD, other steps, and dogecoin in general...but wanted to share this as I promised it on reddit.

To the moon!

Doge: D8kWKgF2x6gsiZzRyXgonogPQuRMxf6qtp

more ...

onConnect updated to handle additional trigger.

I expanded onConnect, you can check out the current version here. I plan to add more triggers, but for now I've added a File trigger.

The configuration file now supports a 'File:$name' section, that you then define a fine to monitor, expected contents of the file, and whether you want to run a command when that file does or does not match the expected value. Only acting when the value changes, though.

But why you might ask? Well, after reading Bumblebee on Arch Wiki I wanted to toggle Nvidia vs Intel on my XPS 15 whenever I moved to/from battery or A/C power. I was initially going to hardcode onConnect to handle this, but that seemed limiting.

Instead I have a framework for other triggers, and simply had to point onConnect to monitor /sys/class/power_supply/ACAD/online file which will change depending on my power source.

Here it is changing from AC power to battery, you can also see the increase in battery time using acpi.

#Unplugging the power cable  
DEBUG:root:State changed for File:onACPower  
DEBUG:root:New state matches configuration File:onACPower, running
actionFalse Cmd echo OFF > /proc/acpi/bbswitch  
DEBUG:root:Found File:onBatteryPower  
DEBUG:root:Loading Configuration for File:onBatteryPower  
DEBUG:root:Looking up prior state for File:onBatteryPower  
DEBUG:root:Prior state for File:onBatteryPower is 1  
DEBUG:root:State changed for File:onBatteryPower  
DEBUG:root:New state matches configuration File:onBatteryPower, running
actionTrue Cmd echo OFF > /proc/acpi/bbswitch  
#watching acpi/bbswitch status in another window. Before/After the
configuration change above  
#plugged in AC power with bbswitch 'ON'  
[jpyth@arch-jpyth jpyth]# cat /proc/acpi/bbswitch ; acpi  
0000:01:00.0 ON  
Battery 0: Unknown, 99%  
#unplugged, before the next run occured(13 second window).  
[jpyth@arch-jpyth jpyth]# cat /proc/acpi/bbswitch ; acpi  
0000:01:00.0 ON  
Battery 0: Discharging, 96%, 02:19:09 remaining  
#after the above run competes. bbswitch is 'OFF', and battery time
increased.  
[jpyth@arch-jpyth jpyth]# cat /proc/acpi/bbswitch ; acpi  
0000:01:00.0 OFF  
Battery 0: Discharging, 96%, 03:37:31 remaining  
#behaves exactly as expected when plugging power back in. The above is
a set of redundant configs, only to show the True/False case possible
with the configuration. I'd normally only have one.

I can now tie in the g13 daemon quite easily, and monitor the log file for error to stop the daemon upon disconnect and also start the daemon when the device is connected automatically.

more ...

onConnect Monitor/Adjust System Configuration Based on Network

I initially just wanted to adjust my sound depending on whether I was at work, or at home on my laptop. I decided to try and write something I could plug additional things into over time, to automate any task I normally do when moving between known networks.

This is also the first time I've shared something I wrote on github. I'm sure I broke every rule in the book on best practices, as I am self taught/not a developer. Feel free to check it out though, OnConnect GitHub. I welcome any feedback.:)

I'm not sure I like using the MAC for this, I debated using ESSID and may very well go back to that. I don't like the case of finding more than one MAC that might have a config found(work), but I also wanted to read/parse from a file though not a command+stdout parsing. I couldn't find a reliable method for obtaining the ESSID from a file, yet.

Some example of it working, for me atleast:)
:::bash
#no network, no macs found, default config
[jpyth@arch-jpyth ~]$ ip addr | grep -A1 wlp8s0
3: wlp8s0: \ mtu 1500 qdisc mq state DOWN qlen 1000
link/ether c4:85:08:fc:91:85 brd ff:ff:ff:ff:ff:ff
[jpyth@arch-jpyth ~]$
[jpyth@arch-jpyth ~]$ sudo systemctl status onConnect
onConnect.service - onConnect
Loaded: loaded (/usr/lib/systemd/system/onConnect.service; enabled)
Active: active (running) since Fri 2013-03-29 10:29:42 PDT; 2s ago
Process: 7886 ExecStop=/usr/lib/systemd/scripts/onConnectStop (code=killed, signal=TERM)
Process: 7898 ExecStart=/usr/lib/systemd/scripts/onConnectStart (code=exited, status=0/SUCCESS)
Main PID: 7905 (onConnect)
CGroup: name=systemd:/system/onConnect.service
└─7905 /usr/bin/python2 /usr/bin/onConnect

Mar 29 10:29:42 arch-jpyth systemd[1]: Starting onConnect...  
Mar 29 10:29:42 arch-jpyth systemd[1]: Started onConnect.  
[jpyth@arch-jpyth ~]$ tail /var/log/onConnect/onConnect.log  
INFO:root:Config found for Default  
DEBUG:root:\<function doVolume at 0x7fd4c1dd30c8>  
INFO:root:command amixer cset iface=MIXER,name='Master Playback Volume'
60% for Default  
DEBUG:root:\<function doVpn at 0x7fd4c1dd3140>  
INFO:root:command systemctl stop vpn for Default  
[jpyth@arch-jpyth ~]$  
#vpn being stopped:  
[jpyth@arch-jpyth ~]$ sudo systemctl status vpn  
vpn.service - OpenVpn For Work  
Loaded: loaded (/usr/lib/systemd/system/vpn.service; disabled)  
Active: inactive (dead)

Mar 29 10:29:42 arch-jpyth systemd[1]: Stopping OpenVpn For Work...  
Mar 29 10:29:43 arch-jpyth systemd[1]: Stopped OpenVpn For Work.  
[jpyth@arch-jpyth ~]$

#Now starting/joining wireless network  
[jpyth@arch-jpyth ~]$ sudo systemctl start wireless  
[jpyth@arch-jpyth ~]$ systemctl status wireless  
wireless.service - Wireless  
Loaded: loaded (/usr/lib/systemd/system/wireless.service; enabled)  
Active: active (running) since Fri 2013-03-29 10:34:37 PDT; 5s ago  
Process: 7692 ExecStop=/usr/lib/systemd/scripts/wirelessStop
(code=exited, status=0/SUCCESS)  
Process: 7942 ExecStart=/usr/lib/systemd/scripts/wirelessStart
(code=exited, status=0/SUCCESS)  
Main PID: 7948 (wpa_supplicant)  
CGroup: name=systemd:/system/wireless.service  
└─7948 /usr/sbin/wpa_supplicant -f
/var/log/wpa_supplicant/wpa_supplicant.log -B -i wlp8s0
-P/var/run/wireless.pid -c /etc/wpa_supplicant.conf -d  
[jpyth@arch-jpyth ~]$

#onConnect log file  
INFO:root:['FF:FF:FF:FF:FF:FF', 'Default']  
INFO:root:Config found for FF:FF:FF:FF:FF:FF  
['description', 'location', 'volume', 'vpn']  
DEBUG:root:\<function doVolume at 0x7fd4c1dd30c8>  
INFO:root:command amixer cset iface=MIXER,name='Master Playback Volume'
85% for FF:FF:FF:FF:FF:FF  
DEBUG:root:\<function doVpn at 0x7fd4c1dd3140>  
INFO:root:command systemctl start vpn for FF:FF:FF:FF:FF:FF

#vpn started automatically when joined:  
[jpyth@arch-jpyth ~]$ sudo systemctl status vpn  
vpn.service - OpenVpn For Work  
Loaded: loaded (/usr/lib/systemd/system/vpn.service; disabled)  
Active: active (running) since Fri 2013-03-29 10:34:57 PDT; 1min 22s
ago  
Process: 7978 ExecStart=/usr/lib/systemd/scripts/vpnStart (code=exited,
status=0/SUCCESS)  
Main PID: 7986 (screen)  
CGroup: name=systemd:/system/vpn.service

Mar 29 10:34:57 arch-jpyth systemd[1]: Starting OpenVpn For Work...  
Mar 29 10:34:57 arch-jpyth systemd[1]: Started OpenVpn For Work.  
[jpyth@arch-jpyth ~]$

I think it'll do what I need=D

more ...

Starting Wireless On Boot With systemd

I didn't want to use a GUI to manage my wireless network. Majority of the time I will be at known locations, and when needing to join a new network doing it via command line is not difficult.

I have known networks configured, with dhcpcd and wpa_supplicant started during bootup by systemd. I also chose to log, and rotate, wpa_supplicant to help debug any network issues I might encounter. The following was done in Arch.

A few files must exist, the first is a .service file under /usr/lib/systemd/system/. The Type=forking is required since we are starting a daemon, the PIDFile is optional. If you include it, make sure you actually create a pid file when starting the process.

#cat /usr/lib/systemd/system/wireless.service  
[Unit]  
Description=Wireless

[Service]  
Type=forking  
PIDFILE=/var/run/wireless.pid  
ExecStart=/usr/lib/systemd/scripts/wirelessStart  
ExecReload=/usr/lib/systemd/scripts/wirelessRestart  
ExecStop=/usr/lib/systemd/scripts/wirelessStop

[Install]  
WantedBy=multi-user.target

I chose to make individual Start, Restart and Stop scripts as seen above. You may do this differently. Here are mine:

#Start Script  
#cat /usr/lib/systemd/scripts/wirelessStart  
#!/bin/bash  
ps aux | grep wpa_supplicant | grep -v grep &>/dev/null || {  
wpa_supplicant -f /var/log/wpa_supplicant/wpa_supplicant.log -B -i
wlp8s0 -P/var/run/wireless.pid -c /etc/wpa_supplicant.conf -d  
}

#Stop Script - I haven't had an issue with pkill failing to get the job done.  
#cat /usr/lib/systemd/scripts/wirelessStop  
#!/bin/bash  
pkill wpa_supplicant

#Restart Script  
#cat /usr/lib/systemd/scripts/wirelessRestart  
#!/bin/bash  
/usr/lib/systemd/scripts/wirelessStop  
sleep 3  
/usr/lib/systemd/scripts/wirelessStart

logrotate:

#cat /etc/logrotate.d/wpa_supplicant  
/var/log/wpa_supplicant/*log {  
copytruncate  
compress  
notifempty  
missingok  
}

Enabling the new service, and checking status:

#enable the service  
[jpyth@arch-jpyth ~]$ sudo systemctl enable wireless  
ln -s '/usr/lib/systemd/system/wireless.service'
'/etc/systemd/system/multi-user.target.wants/wireless.service'  
#start the service  
[jpyth@arch-jpyth ~]$ sudo systemctl start wireless  
#status of service  
[jpyth@arch-jpyth ~]$ sudo systemctl status wireless  
wireless.service - Wireless  
Loaded: loaded (/usr/lib/systemd/system/wireless.service; enabled)  
Active: active (running) since Wed 2013-03-27 07:29:19 PDT; 3s ago  
Process: 1574 ExecStart=/usr/lib/systemd/scripts/wirelessStart
(code=exited, status=0/SUCCESS)  
Main PID: 1579 (wpa_supplicant)  
CGroup: name=systemd:/system/wireless.service  
└─1579 wpa_supplicant -f /var/log/wpa_supplicant/wpa_supplicant.log
-B -i wlp8s0 -P/var/run/wireless.pid -c /etc/wpa_supplicant.conf -d

Mar 27 07:29:18 arch-jpyth systemd[1]: Starting Wireless...  
Mar 27 07:29:19 arch-jpyth systemd[1]: Started Wireless.  
[jpyth@arch-jpyth ~]$ psg wpa_supplican  
root 1579 0.0 0.0 32328 1344 ? Ss 07:29 0:00 wpa_supplicant -f
/var/log/wpa_supplicant/wpa_supplicant.log -B -i wlp8s0
-P/var/run/wireless.pid -c /etc/wpa_supplicant.conf -d  
#log file  
[jpyth@arch-jpyth ~]$ tail
/var/log/wpa_supplicant/wpa_supplicant.log  
EAP: EAP entering state DISABLED  
EAPOL: SUPP_PAE entering state AUTHENTICATED  
EAPOL: Supplicant port status: Authorized  
EAPOL: SUPP_BE entering state IDLE  
EAPOL authentication completed successfully  
RTM_NEWLINK: operstate=1 ifi_flags=0x11043
([UP][RUNNING][LOWER_UP])  
RTM_NEWLINK, IFLA_IFNAME: Interface 'wlp8s0' added  
WEXT: if_removed already cleared - ignore event  
EAPOL: startWhen --> 0  
EAPOL: disable timer tick  
[jpyth@arch-jpyth ~]$

*note if you need dhcpcd enable/verify:

#enable the service  
[jpyth@arch-jpyth ~]$ sudo systemctl enable dhcpcd  
ln -s '/usr/lib/systemd/system/dhcpcd.service'
'/etc/systemd/system/multi-user.target.wants/dhcpcd.service'  
#start the service  
[jpyth@arch-jpyth ~]$ sudo systemctl start dhcpcd  
#status of the service  
[jpyth@arch-jpyth ~]$ sudo systemctl status dhcpcd  
dhcpcd.service - dhcpcd on all interfaces  
Loaded: loaded (/usr/lib/systemd/system/dhcpcd.service; enabled)  
Active: active (running) since Wed 2013-03-27 07:32:06 PDT; 4s ago  
Process: 1697 ExecStart=/sbin/dhcpcd -q -b (code=exited,
status=0/SUCCESS)  
Main PID: 1698 (dhcpcd)  
CGroup: name=systemd:/system/dhcpcd.service  
└─1698 /sbin/dhcpcd -q -b

Mar 27 07:32:06 arch-jpyth systemd[1]: Started dhcpcd on all
interfaces.  
Mar 27 07:32:06 arch-jpyth dhcpcd[1698]: wlp8s0: sending IPv6 Router
Solicitation  
Mar 27 07:32:06 arch-jpyth dhcpcd[1698]: wlp8s0: rebinding lease of
192.168.1.42  
Mar 27 07:32:06 arch-jpyth dhcpcd[1698]: enp7s0: waiting for carrier  
Mar 27 07:32:06 arch-jpyth dhcpcd[1698]: wlp8s0: acknowledged
192.168.1.42 from 192.168.1.1  
Mar 27 07:32:06 arch-jpyth dhcpcd[1698]: wlp8s0: checking for
192.168.1.42  
Mar 27 07:32:10 arch-jpyth dhcpcd[1698]: wlp8s0: sending IPv6 Router
Solicitation  
[jpyth@arch-jpyth ~]$
more ...

Configuring irssi

autoconnect:

#server section of ~/.irssi/config  
servers = (  
{  
address = "$hostname";  
chatnet = "IRCnet";  
port = "6667";  
autoconnect = "true";  
password = "$user:$pass";  
}  
);

irssi logging:

#Create directory for logs  
#Large storage drive == /storage/  
sudo ln -s /storage/irssi /var/log/  
#You'll probably want to own these files or atleast rw access.  
chown -R $owner:$group /storage/irrsi  
:::bash  
#in irssi run:  
/SET autolog ON  
/SET autolog_path /var/log/irssi/$tag/$0.log  
/save

logrotate:

#Contents of /etc/logrotate.d/irssi  
/var/log/irssi/*/*log {  
copytruncate  
compress  
notifempty  
missingok  
}

irssi-libnotify-git from Arch User Repository (AUR):

#For xfce4  
sudo pacman -S xfce4-notifyd  
#Get package from AUR  
wget
https://aur.archlinux.org/packages/ir/irssi-libnotify-git/irssi-libnotify-git.tar.gz  
Extract && cd  
tar -xvf irssi-libnotify-git.tar.gz  
cd irssi-libnotify-git  
#create package - Install missing deps  
makepkg || {  
#missing deps  
sudo pacman -S python2-gobject perl-html-parser  
}  
makepkg  
#install final package  
sudo pacman -U irssi-libnotify-git*.pkg.tar.xz  
#create directories if missing && symlink installed script for irssi
to use.  
mkdir -p ~/.irssi/scripts/autorun && ln -s
/usr/share/irssi/scripts/notify.pl ~/.irssi/scripts/autorun/  
#dep for notify-listener.py  
sudo pacman -S python2-dbus  
#start listener -- I do this when launching irc. You could start it
with systemd/init too.  
nohup notify-listener.py &

Simple script to grab current or start a new irssi:

#!/bin/bash

screenN="irssi"  
notify=\`which notify-listener.py\`  
irc=\`which irssi\`

ps aux | grep "$notify" | grep -v grep &>/dev/null || {  
nohup $notify &  
}  
ps aux | grep -i "$irc" | grep -v grep &>/dev/null || {  
screen -S $screenN $irc  
} && {  
screen -list | grep "$screenN" | wc -l | grep "\^1$" &>/dev/null &&
{  
screen -D $screenN  
screen -R $screenN  
} || {  
echo "You has too many/few irssis, check screen"  
}  
}

Enjoy

more ...