From a6a23d340309c4bb628b65df8082a416db6a053a Mon Sep 17 00:00:00 2001 From: Yann Herklotz Date: Mon, 4 Jun 2018 22:34:25 +0100 Subject: Adding Haskell install script --- install | 54 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100755 install (limited to 'install') diff --git a/install b/install new file mode 100755 index 0000000..05aab42 --- /dev/null +++ b/install @@ -0,0 +1,54 @@ +#!/usr/bin/env runhaskell +-- -*- haskell -*- + +import System.Directory ( removeFile + , doesFileExist + , createFileLink + , pathIsSymbolicLink + , copyFile + ) + +remIf :: FilePath -> IO () +remIf dest = do + res <- doesFileExist dest + rem res dest + where + rem b dest + | b = removeFile dest + | otherwise = return () + +forceOp :: (FilePath -> FilePath -> IO ()) -> FilePath -> FilePath -> IO () +forceOp op src dest = do + remIf dest + op fullSrc dest + where + fullSrc = + +forceCopy :: FilePath -> FilePath -> IO () +forceCopy = forceOp copyFile + +forceFileSymLink :: FilePath -> FilePath -> IO () +forceFileSymLink = forceOp createFileLink + +main :: IO () +main = do + putStrLn "Installing emacs config..." + forceCopy "./emacs/init.el" "~/.emacs.d/init.el" + forceFileSymLink "./emacs/loader.org" "~/.emacs.d/loader.org" + + putStrLn "Installing X config..." + forceFileSymLink "./X/.Xmodmap" "~/.Xmodmap" + forceFileSymLink "./X/.Xresources" "~/.Xresources" + forceFileSymLink "./X/.xinitrc" "~/.xinitrc" + + putStrLn "Installing tmux config..." + forceFileSymLink "./tmux/.tmux.conf" "~/.tmux.conf" + + putStrLn "Installing i3 config..." + forceFileSymLink "./i3/config" "~/.config/i3/config" + + putStrLn "Installing zsh config..." + forceFileSymLink "./zsh/.zshrc" "~/.zshrc" + + putStrLn "Installing isync config..." + forceFileSymLink "./isync/.mbsyncrc" "~/.mbsyncrc" -- cgit