<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: James C Kimble Jr</title>
    <description>The latest articles on Forem by James C Kimble Jr (@jckimble).</description>
    <link>https://forem.com/jckimble</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F981518%2F96728bd7-8c1d-4bba-81f0-afc618eb2570.jpeg</url>
      <title>Forem: James C Kimble Jr</title>
      <link>https://forem.com/jckimble</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/jckimble"/>
    <language>en</language>
    <item>
      <title>Using Chromebook as a Development Workstation</title>
      <dc:creator>James C Kimble Jr</dc:creator>
      <pubDate>Tue, 26 Dec 2023 09:01:17 +0000</pubDate>
      <link>https://forem.com/jckimble/using-chromebook-as-a-development-workstation-1hme</link>
      <guid>https://forem.com/jckimble/using-chromebook-as-a-development-workstation-1hme</guid>
      <description>&lt;h1&gt;
  
  
  Introduction
&lt;/h1&gt;

&lt;p&gt;Chromebooks are becoming more popular as time goes on. With the adoption of devcontainers using a chromebook as your developer workstation becomes a viable alternative. In this post I will show you how I have setup my chromebook as a development workstation using Docker and Visual Studio Code.&lt;/p&gt;

&lt;h1&gt;
  
  
  Devcontainers and Dotfiles
&lt;/h1&gt;

&lt;p&gt;This setup is designed with Devcontainers and Dotfiles in mind. I'm not going into depth on this subject being that there is a lot of information on these topics. If you would like me to cover these topics for use in this setup leave a comment and I'll write a post explaining how to setup Devcontainers and Dotfiles.&lt;/p&gt;

&lt;h1&gt;
  
  
  Enable Linux Development Environment
&lt;/h1&gt;

&lt;p&gt;Open Settings → Advanced → Developers&lt;br&gt;
Next to "Linux development environment," select Turn On.&lt;br&gt;
Follow the on-screen instructions.&lt;/p&gt;
&lt;h1&gt;
  
  
  Installing Docker
&lt;/h1&gt;

&lt;p&gt;While you can use codespaces to use your chromebook as a thin client, I've always preferred my own hardware. So we're going to install docker running the following commands:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;apt-get update
&lt;span class="nb"&gt;sudo &lt;/span&gt;apt-get &lt;span class="nb"&gt;install &lt;/span&gt;software-properties-common
curl &lt;span class="nt"&gt;-fsSL&lt;/span&gt; https://download.docker.com/linux/debian/gpg | gpg &lt;span class="nt"&gt;--dearmor&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; docker.gpg
&lt;span class="nb"&gt;sudo install&lt;/span&gt; &lt;span class="nt"&gt;-o&lt;/span&gt; root &lt;span class="nt"&gt;-g&lt;/span&gt; root &lt;span class="nt"&gt;-m&lt;/span&gt; 644 docker.gpg /usr/share/keyrings/docker-keyring.gpg
&lt;span class="nb"&gt;sudo &lt;/span&gt;sh &lt;span class="nt"&gt;-c&lt;/span&gt; &lt;span class="s1"&gt;'echo "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-keyring.gpg] https://download.docker.com/linux/debian $(lsb_release -cs) stable" &amp;gt; /etc/apt/sources.list.d/docker.list'&lt;/span&gt;
&lt;span class="nb"&gt;sudo &lt;/span&gt;apt-get update
&lt;span class="nb"&gt;sudo &lt;/span&gt;apt-get &lt;span class="nb"&gt;install &lt;/span&gt;docker-ce docker-ce-cli containerd.io &lt;span class="nt"&gt;-y&lt;/span&gt;
&lt;span class="nb"&gt;sudo &lt;/span&gt;usermod &lt;span class="nt"&gt;-aG&lt;/span&gt; docker &lt;span class="nv"&gt;$USER&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;These commands in order:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Update the package database&lt;/li&gt;
&lt;li&gt;Install lsb_release to get the Debian version&lt;/li&gt;
&lt;li&gt;Download the Docker GPG Key&lt;/li&gt;
&lt;li&gt;Install the Docker Keyring&lt;/li&gt;
&lt;li&gt;Add the Docker Deb repository to APT&lt;/li&gt;
&lt;li&gt;Update the package database to add docker&lt;/li&gt;
&lt;li&gt;Install Docker&lt;/li&gt;
&lt;li&gt;Add your user to the docker group
You will need to restart for your user to be added to the docker group.&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  Installing Visual Studio Code
&lt;/h1&gt;

&lt;p&gt;While you can use any IDE that can run on linux vscode has the best devcontainer support imho. The commands to install vscode are:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl &lt;span class="nt"&gt;-fsSL&lt;/span&gt; https://packages.microsoft.com/keys/microsoft.asc | gpg &lt;span class="nt"&gt;--dearmor&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; microsoft.gpg
&lt;span class="nb"&gt;sudo install&lt;/span&gt; &lt;span class="nt"&gt;-o&lt;/span&gt; root &lt;span class="nt"&gt;-g&lt;/span&gt; root &lt;span class="nt"&gt;-m&lt;/span&gt; 644 microsoft.gpg /usr/share/keyrings/microsoft-archive-keyring.gpg
&lt;span class="nb"&gt;sudo &lt;/span&gt;sh &lt;span class="nt"&gt;-c&lt;/span&gt; &lt;span class="s1"&gt;'echo "deb [arch=amd64 signed-by=/usr/share/keyrings/microsoft-archive-keyring.gpg] https://packages.microsoft.com/repos/vscode stable main" &amp;gt; /etc/apt/sources.list.d/vscode.list'&lt;/span&gt;
&lt;span class="nb"&gt;sudo &lt;/span&gt;apt-get update
&lt;span class="nb"&gt;sudo &lt;/span&gt;apt-get &lt;span class="nb"&gt;install &lt;/span&gt;code &lt;span class="c"&gt;# or code-insiders&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;These commands in order:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Download the Microsoft GPG Key&lt;/li&gt;
&lt;li&gt;Install Microsoft's Keyring&lt;/li&gt;
&lt;li&gt;Add the VSCode Deb repository to APT&lt;/li&gt;
&lt;li&gt;Update the package database to add VSCode&lt;/li&gt;
&lt;li&gt;Install VSCode&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  Quality of Life Tweeks
&lt;/h1&gt;

&lt;p&gt;These are random tweeks that I have done after doing the above. If you followed the top steps you should have a working development workstation, these are random fixes to tweek the setup to be less overhead on a chromebook.&lt;/p&gt;

&lt;h2&gt;
  
  
  VSCode Title Bar
&lt;/h2&gt;

&lt;p&gt;If you use dark mode like me, you might have noticed that the default title bar is light mode. My solution for that was to set the title bar style to custom.&lt;/p&gt;

&lt;p&gt;Open menu File → Preferences → Settings&lt;/p&gt;

&lt;p&gt;and add the following setting:&lt;/p&gt;

&lt;p&gt;"window.titleBarStyle": "custom"&lt;/p&gt;

&lt;h2&gt;
  
  
  Prune Docker Storage
&lt;/h2&gt;

&lt;p&gt;Chromebooks typically do not have much storage space so unneeded and old files need to be removed regularly where you do not run out of storage. My solution for this was to create an systemd timer which removes containers and images not used in a week and unnamed volumes.&lt;/p&gt;

&lt;p&gt;/etc/systemd/system/docker-purge.service&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;[Unit]
Description=Prune Docker Older than 1 Week
Requires=docker.service
Wants=docker-purge.timer

[Service]
Type=oneshot
ExecStart=/usr/bin/docker system prune -fa --filter "until=168h"
ExecStart=/usr/bin/docker volume prune -f

[Install]
WantedBy=multi-user.target
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;/etc/systemd/system/docker-purge.timer&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;[Unit]
Description=Prune Docker Older than 1 Week
Requires=docker-purge.service

[Timer]
Unit=docker-purge.service
OnCalendar=daily
AccuracySec=24h

[Install]
WantedBy=timers.target
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;After you created these files enable and start the timer by running:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;systemctl &lt;span class="nb"&gt;enable &lt;/span&gt;docker-purge.timer
&lt;span class="nb"&gt;sudo &lt;/span&gt;systemctl start docker-purge.timer
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Unattended Upgrade
&lt;/h2&gt;

&lt;p&gt;While I would never suggest full unattended upgrades on a production server, it makes perfect sense on a chromebook since VSCode and Docker are running on a slim container with minimal services and having to remember to go in and running upgrades yourself takes time. All that is needed is to go into the following file and change this section to.&lt;/p&gt;

&lt;p&gt;/etc/apt/apt.conf.d/50unattended-upgrades&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Unattended-Upgrade::Origins-Pattern {
"origin=*";
};
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h1&gt;
  
  
  Request For Comments
&lt;/h1&gt;

&lt;p&gt;This setup is what I am currently using. I would love to hear your thoughts and ideas for improvement.&lt;/p&gt;

</description>
      <category>chromebook</category>
      <category>devcontainers</category>
      <category>programming</category>
      <category>docker</category>
    </item>
    <item>
      <title>Using ChatGPT to Help Write Blog Posts</title>
      <dc:creator>James C Kimble Jr</dc:creator>
      <pubDate>Thu, 06 Apr 2023 16:15:00 +0000</pubDate>
      <link>https://forem.com/jckimble/using-chatgpt-to-help-write-blog-posts-589b</link>
      <guid>https://forem.com/jckimble/using-chatgpt-to-help-write-blog-posts-589b</guid>
      <description>&lt;p&gt;As a software developer, it can be challenging to write blog posts that effectively communicate your ideas and expertise. ChatGPT can be a awesome tool to help with this, all of my blog post use ChatGPT to help me get into the world of blogging. Even this post is written by ChatGPT with my direction.&lt;/p&gt;

&lt;p&gt;ChatGPT is an AI language model that can generate human-like text based on the prompts it receives. This means that developers who struggle with writing can benefit from its services.&lt;/p&gt;

&lt;h2&gt;
  
  
  Best Uses for ChatGPT in Blog Posts
&lt;/h2&gt;

&lt;p&gt;There are several ways that ChatGPT can be used to enhance the blogging process for software developers.&lt;/p&gt;

&lt;h3&gt;
  
  
  Idea Generation
&lt;/h3&gt;

&lt;p&gt;Generating ideas is one of the most difficult parts of blogging for many developers. However, ChatGPT can help by generating a list of potential blog post ideas. Here are some prompts that developers can use to generate ideas:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;"What are the latest trends in software development?"&lt;/li&gt;
&lt;li&gt;"What are some common mistakes that software developers make?"&lt;/li&gt;
&lt;li&gt;"How can software developers improve their productivity?"&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Developers can provide these prompts to ChatGPT and it will generate ideas related to those topics.&lt;/p&gt;

&lt;h3&gt;
  
  
  Outlining
&lt;/h3&gt;

&lt;p&gt;Another way that ChatGPT can be used to help developers is by outlining their blog posts. Developers can provide ChatGPT with a topic and it can generate an outline for their blog post, complete with headings and subheadings. Here are some prompts that developers can use to generate outlines:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;"Outline a blog post on the benefits of agile development."&lt;/li&gt;
&lt;li&gt;"Provide an outline for a blog post on the differences between Python and Java."&lt;/li&gt;
&lt;li&gt;"Outline a blog post on the best practices for software testing."&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Developers can provide these prompts to ChatGPT and it will generate an outline for their blog post.&lt;/p&gt;

&lt;h3&gt;
  
  
  Writing Assistance
&lt;/h3&gt;

&lt;p&gt;For developers who struggle with writing, ChatGPT can provide writing assistance. Developers can ask ChatGPT to generate entire paragraphs or even entire blog posts for them. Here are some prompts that developers can use to generate content:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;"Write a paragraph on the importance of code reviews."&lt;/li&gt;
&lt;li&gt;"Write a paragraph on the benefits of continuous integration."&lt;/li&gt;
&lt;li&gt;"Write a blog post on the top software development trends of 2023."&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Developers can provide these prompts to ChatGPT and it will generate content for their blog post. While they will still need to edit and revise the content to make it their own, having a starting point can make the writing process much easier.&lt;/p&gt;

&lt;h3&gt;
  
  
  Time-Saving
&lt;/h3&gt;

&lt;p&gt;Finally, using ChatGPT for blog post creation can save developers time. With the ability to generate ideas, outlines, and even content, developers can spend less time brainstorming and more time writing.&lt;/p&gt;

&lt;h3&gt;
  
  
  Getting Started with ChatGPT
&lt;/h3&gt;

&lt;p&gt;To get started with ChatGPT, developers can sign up for an account on a platform that offers access to its services. From there, they can start generating ideas, outlines, and even content for their blog posts.&lt;/p&gt;

&lt;h3&gt;
  
  
  Conclusion
&lt;/h3&gt;

&lt;p&gt;ChatGPT is a valuable tool for software developers who want to share their expertise through blogging but struggle with writing. By using ChatGPT, developers can generate ideas, outlines, and even content for their blog posts, making the writing process easier and more efficient.&lt;/p&gt;

</description>
      <category>chatgpt</category>
      <category>tooling</category>
    </item>
    <item>
      <title>Using GitHub's Contribution Graph as a Desktop Background</title>
      <dc:creator>James C Kimble Jr</dc:creator>
      <pubDate>Mon, 03 Apr 2023 16:15:00 +0000</pubDate>
      <link>https://forem.com/jckimble/using-githubs-contribution-graph-as-a-desktop-background-47g2</link>
      <guid>https://forem.com/jckimble/using-githubs-contribution-graph-as-a-desktop-background-47g2</guid>
      <description>&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;As developers, we take pride in our GitHub contribution graph, showcasing our commitment to open-source projects and personal coding projects. But have you ever thought about using your contribution graph in a different way? In this post, I will show you how to generate a customized desktop background image using your contribution graph.&lt;/p&gt;

&lt;h2&gt;
  
  
  Generating Background Image
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Install Package
&lt;/h3&gt;

&lt;p&gt;To make it easy to use, I have packaged the tool as an npm package. Simply install it by running the following command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;-g&lt;/span&gt; @jckimble/github-graph-background
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Run Github Graph Background
&lt;/h3&gt;

&lt;p&gt;My favorite theme is fullrandom:dark, which uses all the other themes with a dark background. Run the tool by executing the following command in your terminal:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;github-graph-background &lt;span class="nt"&gt;--token&lt;/span&gt; &lt;span class="k"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;GITHUB_TOKEN&lt;/span&gt;&lt;span class="k"&gt;}&lt;/span&gt; &lt;span class="nt"&gt;--theme&lt;/span&gt; fullrandom:dark
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Create a script
&lt;/h3&gt;

&lt;p&gt;Here's an example script that I use for Plasma:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;#!/bin/bash&lt;/span&gt;

&lt;span class="nv"&gt;CACHE&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="k"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;HOME&lt;/span&gt;&lt;span class="k"&gt;}&lt;/span&gt;/.cache

&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt; &lt;span class="nt"&gt;-z&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$GITHUB_TOKEN&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="o"&gt;]&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="k"&gt;then
    &lt;/span&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"GITHUB_TOKEN must be set"&lt;/span&gt;
    &lt;span class="nb"&gt;exit &lt;/span&gt;1
&lt;span class="k"&gt;fi

&lt;/span&gt;&lt;span class="nb"&gt;test&lt;/span&gt; &lt;span class="nt"&gt;-f&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="k"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;CACHE&lt;/span&gt;&lt;span class="k"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;/background.png"&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="nb"&gt;mv&lt;/span&gt; &lt;span class="k"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;CACHE&lt;/span&gt;&lt;span class="k"&gt;}&lt;/span&gt;/background.png &lt;span class="k"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;CACHE&lt;/span&gt;&lt;span class="k"&gt;}&lt;/span&gt;/background.old.png
&lt;span class="nb"&gt;test&lt;/span&gt; &lt;span class="nt"&gt;-f&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="k"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;CACHE&lt;/span&gt;&lt;span class="k"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;/background.old.png"&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; plasma-apply-wallpaperimage &lt;span class="k"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;CACHE&lt;/span&gt;&lt;span class="k"&gt;}&lt;/span&gt;/background.old.png

npx @jckimble/github-graph-background &lt;span class="nt"&gt;--theme&lt;/span&gt; random:dark &lt;span class="nt"&gt;--output&lt;/span&gt; &lt;span class="k"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;CACHE&lt;/span&gt;&lt;span class="k"&gt;}&lt;/span&gt;/background.png

plasma-apply-wallpaperimage &lt;span class="k"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;CACHE&lt;/span&gt;&lt;span class="k"&gt;}&lt;/span&gt;/background.png
&lt;span class="nb"&gt;test&lt;/span&gt; &lt;span class="nt"&gt;-f&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="k"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;CACHE&lt;/span&gt;&lt;span class="k"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;/background.old.png"&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="nb"&gt;rm&lt;/span&gt; &lt;span class="k"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;CACHE&lt;/span&gt;&lt;span class="k"&gt;}&lt;/span&gt;/background.old.png
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Why Developers are Proud of Their Contribution Graph
&lt;/h2&gt;

&lt;p&gt;Developers take pride in their contribution graph because it reflects the number of commits and contributions made over time. A filled-in graph demonstrates a high level of activity and dedication to coding, which is something that we strive for as developers. The contribution graph is a tangible representation of our commitment to the community and making a positive impact.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;Creating a custom desktop background using your GitHub contribution graph is a fun and unique way to showcase your coding skills and dedication to the community. By following the steps outlined in this post, you can create a personalized desktop background that reflects your commitment to coding. Give it a try and let me know how it turns out!&lt;/p&gt;

</description>
      <category>github</category>
      <category>ricing</category>
    </item>
    <item>
      <title>Building An Arch Linux Repository with GitHub Actions</title>
      <dc:creator>James C Kimble Jr</dc:creator>
      <pubDate>Thu, 30 Mar 2023 03:29:03 +0000</pubDate>
      <link>https://forem.com/jckimble/building-an-arch-linux-repository-with-github-actions-48nh</link>
      <guid>https://forem.com/jckimble/building-an-arch-linux-repository-with-github-actions-48nh</guid>
      <description>&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;Arch Linux is a popular rolling-release Linux distribution that is known for its simplicity, flexibility, and bleeding-edge packages. Building AUR packages for Arch Linux can be a time-consuming and tedious process, even with AUR Helpers. In this post, I will show you the tool I created to use GitHub Actions to automate the process of building Arch Linux packages and how to create your own aur repository.&lt;/p&gt;

&lt;h2&gt;
  
  
  Fork your own
&lt;/h2&gt;

&lt;p&gt;I have created a GitHub repository that builds AUR packages and creates a Arch Linux repository using GitHub Releases.&lt;br&gt;
In this tutorial, I will show you how to use it to automate the process of building an Arch Linux packages.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 1: Setting up your environment
&lt;/h3&gt;

&lt;p&gt;Before we start, you will need to have a few things set up:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A GitHub account&lt;/li&gt;
&lt;li&gt;A fork of my GitHub repository (&lt;a href="https://github.com/jckimble/pkgbuilds"&gt;https://github.com/jckimble/pkgbuilds&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;A text editor (I will be using Visual Studio Code)&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Step 2: Customizing your fork
&lt;/h3&gt;

&lt;p&gt;In your fork of my repository, do the following:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Remove any packages you do not want to build&lt;/li&gt;
&lt;li&gt;Remove or rename the keyring package&lt;/li&gt;
&lt;li&gt;Delete key.gpg.enc&lt;/li&gt;
&lt;li&gt;Add Secrets (Pick one)&lt;/li&gt;
&lt;li&gt;- Set REPO_TOKEN with a private token&lt;/li&gt;
&lt;li&gt;- Set ENCRYPTION_KEY for actions and dependabot&lt;/li&gt;
&lt;li&gt;Update config.json&lt;/li&gt;
&lt;li&gt;Update README.md where others will know how to add your repository to their Arch Linux repository list&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Step 3: Committing and pushing your changes
&lt;/h3&gt;

&lt;p&gt;Once you have completed the above steps, commit and push your changes to your fork of the repository. GitHub Actions will automatically start running your workflow and build your AUR packages.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 4: Checking the build status
&lt;/h3&gt;

&lt;p&gt;You can check the status of your build by going to the "Actions" tab on your GitHub repository. Here, you will see the status of your workflow and any logs or errors that occurred during the build.&lt;/p&gt;

&lt;h2&gt;
  
  
  Can I just use yours?
&lt;/h2&gt;

&lt;p&gt;Of course, I'm just not going to say for sure I will add the package you desire. I most likely will since it's pretty well automated where I do not personally have to do anything besides add a git submodule. If enough people want to add packages to my repository I may revisit using GitHub Actions using GitHub Issue Forms, to automate the process any further. Just create an issue using the package request issue form and I'll look into the package.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;In this post, I showed you how to use GitHub Actions to automate the process of building an Arch Linux repository. By using GitHub Actions, you can save time and increase productivity by automating repetitive tasks. If you have any questions or comments, feel free to leave them in the comments section below.&lt;/p&gt;

&lt;p&gt;Repository: &lt;a href="https://github.com/jckimble/pkgbuilds"&gt;https://github.com/jckimble/pkgbuilds&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Note: This project is an active work in progress, I am always thinking of new ideas to remove as much manual work as possible. If you have any ideas or suggestions feel free to let me know here in the comments or in the issues section of the repository!&lt;/p&gt;

</description>
      <category>archlinux</category>
      <category>github</category>
      <category>githubactions</category>
      <category>automation</category>
    </item>
  </channel>
</rss>
