DEV Community

Cover image for How I automate my OS 💻

How I automate my OS 💻

Julian Iaquinandi on November 27, 2019

When I started developing, in particular on servers I started writing scripts to get them set up which mainly stemmed from the fact I didn’t know w...
Collapse
 
thefluxapex profile image
Ian Pride • Edited

This is a nice article, but the title can seem misleading to some. When I think of automating an OS I think Shell/Python/AutoKey in Linux and AuotHotkey/AutoIt/Selenium and just about any other language in Windows.

Collapse
 
juliani profile image
Julian Iaquinandi • Edited

Hi Ian. Thanks for commenting and your feedback! Funnily enough, my next post is about using AutohotKey and Bash 🤣 I'm a massive fan of both. It's a tricky one (for me anyway, second ever post 😜) maybe "How I automate my OS installs" is more fitting but I'm not sure.

edit Also bonus points for being the first person to comment on one of my posts 🎉🎉🎉

Collapse
 
thefluxapex profile image
Ian Pride

You're welcome. I just finished my first post on AHK here last night, but I've been reading articles here for a little while now. Love this place.

Thread Thread
 
juliani profile image
Julian Iaquinandi • Edited

I'm a long time lurker and LOVE this community! I also love AHK, use it for all sorts and have a program that lets your create your own custom quick chat messages for a game called Rocket League. Got an email the other day and it cost some poor guy 3 of his steam accounts! (Some games class it as macros as cheating). So if you play games on your dev machine be careful!

Thread Thread
 
thefluxapex profile image
Ian Pride

I only cheat in single player games and only because I don't have time to fully play through all the thousands of games I want to play lol. The fact that people use it a lot for cheating is one of the reasons it has a bad name. It's more than a game cheating tool; far more.

Collapse
 
itlackey profile image
IT Lackey

I love your perspective here. As a developer it seems like the list on install and configure steps to get my workstation up and running is ever growing. I have been tinkering on ideas on how to automate the process and came to a similar solution. Now I am starting to work on a project to make this concept easy to manage, store in the cloud and sync between machines regardless of OS. I would love feedback on my idea and obviously any contributions from the community!

So far I mainly have worked on writing a wiki with my ideas and put together a basic setup to test with as I formalized my design. If anyone is interested please check out the wiki for my repo: github.com/itlackey/drifter

Not trying to spam your comments but am honestly looking for people in the community that might be interested in a tool like this and/or would like to help make it happen.

Thanks for writing this up and inspiring others to automate all the things!

Collapse
 
juliani profile image
Julian Iaquinandi

Thanks! I feel like my career in automating all the things is just beginning! 😉

No worries for posting your project, I've tried implementing something similar to what you are proposing with drifter.

I've settled on syncing everything via Github. I have a couple of bash scripts that either pull new changes in or push them back to the repo. So when changing a dotfile I run the appropriate script. My next step was to add some sort of file watcher to do this automatically but haven't got round to it.

For installs I have a bash script that generates a menu from the names of files in a scripts folder. I generally write a bash script for each package to install and can pick and choose what to install in the script.

For VSCode I use Settings Sync which I'm more than happy with but I am interested in integrating this into my script.

Have a look at my repo Linux Tools, most of the good stuff is in the installs folder. It's nothign special but it works for me!

Collapse
 
itlackey profile image
IT Lackey

That is great stuff!! It seems like our approach is more similar that I even thought originally. Basically drifter just adds a layer on top of what you are doing to help package the scripts for each app so it can be easily shared and used by others similar to npm, apt or package manager x. I started down that road for my own organization and sanity and then added the idea of syncing the associated configurations along with the app packages.
In theory this could provide the same feature as windows 10s setting synchronization but across all machines/OSes.
Anyway, I can rant all day about this stuff. So I will just say if you or anyone is interested in working together to make something like this please contact me. I'd love to work together with other automation junkies and am not opposed to ditching my project to contribute to something else that solves the same problem.

Collapse
 
manierim profile image
Marco Manieri

Very nice article.

I do use the Windows profile file (well, actually through cmder/conEmu but doesn't change so much) to automate a few common task for basic development without docker or other "virtualwares":

function yw {
    yarn watch -new_console
}

function aserve {
    php artisan serve $args -new_console
}

function ngs {
    ngrok http 80 -new_console
    explorer "http://127.0.0.1:4040"
}

function nginxl {
    explorer "http://127.0.0.1"
    nginx -p ".nginx" -new_console

// contains a bare nginx
// conf to proxy the ngrok 
// port 80 to php (on 8000)
// and other services (per
// project, i.e. Laravel
// websockets server on
// 6001 - not shown

}

function serveall {
    yw
    aserve
    nginxl
    ngs
}

And then my favorite

function gocode {
    serveall
    code .
}
Collapse
 
juliani profile image
Julian Iaquinandi

Thanks, I appreciate it. I like Cmder/Conemu really good terminal for Windows but I'm back on linux for the foreseeable I think.

I've not yet tried the new Windows Terminal but I've heard good things.

Collapse
 
therealkevinard profile image
Kevin Ard

I'm team ansible. Sorry. ...but not so sorry lol.

My boss is switching from Windows to Linux when I buy my next workstation tomorrow. Watch me bootstrap his whole rig with ansible 😂

Collapse
 
juliani profile image
Julian Iaquinandi

Never heard of ansible but looks interesting. Will definitely be checking it out. Thanks for brining this to my attention 😀

Collapse
 
therealkevinard profile image
Kevin Ard • Edited

If you've never heard of Ansible, you may as well look up puppet and chef too. They're all similar tools - configuration management and machine provisioning.

I like ansible because it's yaml and I had a smoother time doing things on my local machine (install this. Setup this project. Do these other things I don't feel like doing). ...but the others may be more "you".

But... If you're bashing apt installs, I almost promise you'll go for one of them 😉

Thread Thread
 
juliani profile image
Julian Iaquinandi

I've heard of puppet and chef mentioned by the environment guys at work but wasn't sure what they did or in what context they were being used.

My bash scripts have done me proud and I've learnt a lot but I'm going to have a look at them all and see what's what.

Thanks for sharing 🙏