Skip to content

Latest commit

 

History

567 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

dotfiles

Minimal window manager

Workstation setup for Linux, BSD, and macOS — dotfiles, installation guides, and build scripts

Copilot instructions for models and humans: .github/copilot-instructions.md

  • Menus and monitoring handled by dmenu and simple shell scripts
  • Build scripts included for source-built components: dwm, ghc, neovim, st, xkb, xmonad, xlibre
  • Uniform structure across distros — every install follows the same pattern: profile-based package list, stow-managed dotfiles, per-distro scripts
  • Distro-specific via stow packages — differences (init system, network backend) are handled by swapping stow packages in links.config

Stack

Artix FreeBSD
Display server XLibre (X11) XLibre (X11)
Window manager Xmonad dwm
Menus dmenu dmenu
Editor / IDE Neovim Neovim
Terminal st st
File manager lf lf
Dotfile linking stow stow
Keymaps setxkbmap/XKB setxkbmap/XKB

TL;DR

  1. Get and install a base system of your choice
Artix FreeBSD
.iso artix-base-openrc FreeBSD
My guide artixinstall bsdinstall
  1. Install X server from your distribution's provided packages or build and install Xlibre from source

  2. Run install script that will install, link and test your system

  • Clone this repository:
git clone --depth 1 --branch v0.0.4 https://github.com/holmen1/dotfiles.git ~/repos/dotfiles
  • Chose distro:
cd ~/repos/dotfiles/install/artixinstall

Run and follow the prompts (current artixinstall require manual build and install of: xlibre, ghc, xmonad NB):

./configure-build-install-link.sh

Prompts per step:

Configure git? [y/N]
Generate SSH key? [y/N]
Install yay? [y/N]
/home/holmen1/repos/dotfiles/install/artixinstall/packages/gadsden/pkglist.txt
Install pkglist? [y/N]
/home/holmen1/repos/dotfiles/install/artixinstall/packages/gadsden/foreignpkglist.txt
Install foreignpkglist? [y/N]
Rebuild xmonad? [y/N]
Install xmonad? [y/N]
Build st? [y/N]
Install st? [y/N]
Build xkb keymap? [y/N]
Link dotfiles? [y/N]
Enable services? [y/N]
Run tests? [Y/n]
Sanity check — x1 (artix)

--- Core commands
  [ok] git
  [ok] ssh
  [ok] xmonad
  [ok] st
  [ok] stow
  [ok] dmenu
  [ok] nvim
  [ok] dmenu-menu
  [ok] xkb-toggle

--- X session
  [ok] startx
  [ok] /home/holmen1/.xinitrc
  [ok] /home/holmen1/.cabal/bin/xmonad
  [ok] xbindkeys
  [ok] scrot
  [ok] xterm

--- Notifications
  [ok] dunst
  [ok] notify-send

--- OpenRC services
  [ok] dbus running
  [ok] dhcpcd running
  [ok] elogind running
  [ok] iwd running

--- Dotfile symlinks
  [ok] /home/holmen1/.xinitrc -> repos/dotfiles/config/artixinstall/.xinitrc
  [ok] /home/holmen1/.config/xmonad -> ../repos/dotfiles/config/xmonad/.config/xmonad
  [ok] /home/holmen1/.config/nvim -> ../repos/dotfiles/config/nvim/.config/nvim
  [ok] /home/holmen1/.bashrc -> repos/dotfiles/config/bash/.bashrc

--- Git
  [ok] user.name: user
  [ok] user.email: user@gmail.com

--- SSH
  [ok] id_ed25519 exists
  [ok] id_ed25519 perms 600

--- groups
  [ok] user in wheel group
  [ok] passwordless sudo enabled
  [ok] user in video group

Passed: 32  Failed: 0

Structure

dotfiles/  
├── config              # All user dotfiles to stow (one per editor/tool)
│   ├── artixinstall    # Distro-specifc scripts
│   ├── bsdinstall      # Distro-specifc scripts
│   ├── bash
│   ├── chromium
│   ├── common          # Shared scripts
│   ├── lf
│   ├── nvim
│   ├── xmonad
│   └── ...
└── install
    ├── build           # Source-built components
    │   ├── dwm
    │   ├── ghc
    │   ├── neovim
    │   ├── st
    │   ├── xkb
    │   ├── xlibre
    │   └── xmonad
    └── profiles        # Distro-specific installers
        ├── artixinstall
        ├── bsdinstall
        └── ...

where every distro structured uniformly

artixinstall/
├── configure-build-install-link.sh
├── links
|   └── machine01
│       └── links.config
├── packages
|   └── machine01
│       ├── foreignpkglist.txt
│       └── pkglist.txt
└── tests
    └── machine01
        └── sanity_check.sh

Project Scope

Minimal "desktop" across multiple operating systems. Designed for low-spec hardware (tested on 4 GB RAM).

Supported systems:

  • Linux: Artix (old install guides for Arch and Debian in stale branch, with older extras like Hyprland and xmobar kept there for reference)
  • BSD: FreeBSD
  • macOS: Some config (zsh, nvim, kitty)
  • Unix (xv6) [TODO]

About

all you need

Topics

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages