chore: project scaffold — license, gitignore, build meta, issue templates

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
Padreug 2026-06-28 06:48:06 +02:00
commit 5704bd7ff4
8 changed files with 308 additions and 0 deletions

4
.git-blame-ignore-revs Normal file
View file

@ -0,0 +1,4 @@
# Migrations / mass-reformats — keep `git blame` readable across these.
# Mass-format with nixfmt (RFC 166). Replaced nixpkgs-fmt.
bf03fd06d11cad2e349749082615c7a993d596f2

23
.github/ISSUE_TEMPLATE/bug.yml vendored Normal file
View file

@ -0,0 +1,23 @@
name: Bug
description: Report a problem
labels: [bug]
body:
- type: markdown
attributes:
value: |
Remember: Omarchy is an open source gift, not a product you bought from a vendor
- type: input
id: system-details
attributes:
label: System details
placeholder: e.g. AMD 9950X, NVIDIA 5090, Omarchy 2.1.0
validations:
required: true
- type: textarea
id: steps
attributes:
label: What's wrong?
validations:
required: true

1
.github/ISSUE_TEMPLATE/config.yml vendored Normal file
View file

@ -0,0 +1 @@
blank_issues_enabled: false

View file

@ -0,0 +1,15 @@
name: Documentation
description: New pages or changes to existing
labels: [documentation]
body:
- type: markdown
attributes:
value: |
Remember: Omarchy is an open source gift, not a product you bought from a vendor
- type: textarea
id: steps
attributes:
label: What correction or addition do we need?
validations:
required: true

15
.github/ISSUE_TEMPLATE/enhancement.yml vendored Normal file
View file

@ -0,0 +1,15 @@
name: Enhancement
description: Feature or change
labels: [enhancement]
body:
- type: markdown
attributes:
value: |
Remember: Omarchy is an open source gift, not a product you bought from a vendor
- type: textarea
id: steps
attributes:
label: What do you need?
validations:
required: true

138
.gitignore vendored Normal file
View file

@ -0,0 +1,138 @@
# Reference directories
./omarchy_ref/*
./omarchy/
# Nix build outputs
result
result-*
*.drv
# ISO and disk images
*.iso
*.qcow2
*.img
*.vdi
*.vmdk
# Build artifacts
*.o
*.so
*.a
*.out
build/
dist/
target/
# Temporary files
*.tmp
*.temp
*.swp
*.swo
*~
.#*
\#*#
# System files
.DS_Store
Thumbs.db
desktop.ini
# Editor and IDE files
.vscode/
.idea/
*.iml
.project
.classpath
.settings/
*.sublime-*
# Vim
*.vim
.vim/
Session.vim
.netrwhist
# Emacs
*~
\#*\#
/.emacs.desktop
/.emacs.desktop.lock
*.elc
auto-save-list
tramp
.\#*
# Backup files
*.bak
*.backup
*.old
# Log files
*.log
logs/
*.log.*
# Cache directories
.cache/
cache/
__pycache__/
*.pyc
# Environment files
.env
.env.local
.env.*.local
# SSH keys and secrets
*.key
*.pem
id_rsa
id_rsa.pub
# secrets/ tracks sops-encrypted yaml files (declared in .sops.yaml).
# Plaintext leaks are gated by the pre-commit secret scanner; the
# generic *.key / *.pem rules above still keep raw key material out.
secrets/*
!secrets/*.yaml
!secrets/*.example
!secrets/README.md
# Large media files
*.mp4
*.avi
*.mov
*.mkv
*.zip
*.tar.gz
*.tar.xz
*.7z
*.rar
# Node modules (if any JavaScript projects)
node_modules/
# Python virtual environments
venv/
.venv/
env/
.env/
# Rust
Cargo.lock
# Go
vendor/
go.sum
# Claude Code
.claude/
# Hardware configuration (system-specific).
# Tracked per-host at hosts/<name>/hardware-configuration.nix. A stray
# root-level file — e.g. nixos-generate-config writing to /etc/nixos —
# is ignored (root-anchored) so it isn't committed by accident; move it
# into your host directory instead.
/hardware-configuration.nix
# Nix direnv
.direnv/
.envrc

20
LICENSE Normal file
View file

@ -0,0 +1,20 @@
Copyright (c) David Heinemeier Hansson
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
"Software"), to deal in the Software without restriction, including
without limitation the rights to use, copy, modify, merge, publish,
distribute, sublicense, and/or sell copies of the Software, and to
permit persons to whom the Software is furnished to do so, subject to
the following conditions:
The above copyright notice and this permission notice shall be
included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

92
Makefile Normal file
View file

@ -0,0 +1,92 @@
# Top-level Makefile for nixos-dev-setup / omni.
#
# Wraps nixos-rebuild + cachix + flake update so common operations are
# one command instead of one paragraph. Adapted from mitchellh's
# Makefile but trimmed:
#
# - No vm/bootstrap targets — those are handled by `dev-env-bootstrap`
# for the dev box and by `dev-deploy` for the fleet.
# - No darwin/wsl targets — we don't run those (yet).
# - HOST defaults to `hostname` so `make switch` Just Works on the
# box you're sitting at.
#
# Override anything via env or args:
#
# make switch HOST=host1
# make cache CACHE=aiolabs-nix
# make build FLAKE=/path/to/some/flake
HOST ?= $(shell hostname)
CACHE ?= aiolabs-nix
FLAKE ?= .
# Always allow unfree — most of our hosts need at least one unfree
# package (e.g. claude-code, vscode). Set in env so child processes
# inherit it (cachix push uses nix-store under the hood).
NIXPKGS_ALLOW_UNFREE := 1
export NIXPKGS_ALLOW_UNFREE
.PHONY: help
help:
@echo "Usage: make <target> [HOST=<name>] [CACHE=<cache>] [FLAKE=<path>]"
@echo ""
@echo "Targets:"
@echo " switch nixos-rebuild switch on the local host"
@echo " test nixos-rebuild test (no boot entry change)"
@echo " build nix build the host's toplevel (no switch)"
@echo " update nix flake update"
@echo " cache push the host's closure to \$$CACHE"
@echo " check nix flake check"
@echo " clean nix-collect-garbage -d (system + user)"
@echo " fmt nixfmt every .nix file in the tree"
@echo " shellcheck shellcheck every .sh file in the tree"
@echo ""
@echo "Variables (current values):"
@echo " HOST = $(HOST)"
@echo " CACHE = $(CACHE)"
@echo " FLAKE = $(FLAKE)"
.PHONY: switch
switch:
sudo nixos-rebuild switch --flake $(FLAKE)#$(HOST)
.PHONY: test
test:
sudo nixos-rebuild test --flake $(FLAKE)#$(HOST)
.PHONY: build
build:
nix build $(FLAKE)#nixosConfigurations.$(HOST).config.system.build.toplevel
.PHONY: update
update:
nix flake update --flake $(FLAKE)
# Push the local host's closure to the cache. Requires `cachix` and
# `jq` on PATH and a configured authtoken (`cachix authtoken <token>`).
.PHONY: cache
cache:
nix build $(FLAKE)#nixosConfigurations.$(HOST).config.system.build.toplevel --json \
| jq -r '.[].outputs | to_entries[].value' \
| cachix push $(CACHE)
.PHONY: check
check:
nix flake check $(FLAKE)
.PHONY: clean
clean:
sudo nix-collect-garbage -d
nix-collect-garbage -d
# Format every .nix file. Requires nixfmt on PATH (in nixpkgs).
.PHONY: fmt
fmt:
@find . -name '*.nix' -not -path './.git/*' -print0 \
| xargs -0 -r nixfmt
# Lint every .sh file. Requires shellcheck on PATH (in nixpkgs).
.PHONY: shellcheck
shellcheck:
@find . -name '*.sh' -not -path './.git/*' -print0 \
| xargs -0 -r shellcheck