Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
38 commits
Select commit Hold shift + click to select a range
132948e
feat: add hosts, profiles and core modules
kairosci May 19, 2026
11b0bc0
feat: implement security, hardware and filesystem modules
kairosci May 19, 2026
9cc8175
feat: add desktop, network and config file modules
kairosci May 19, 2026
150714a
feat: add containers, microvm guests and instance pool
kairosci May 19, 2026
0190689
feat: add shell scripts for spring, pool and desktop
kairosci May 19, 2026
16a55ac
feat: add test suite infrastructure
kairosci May 19, 2026
f379123
feat: add CI workflows, build script, docs and fix nftables ZFS boot
kairosci May 19, 2026
f30022c
fix: resolve devShell buildInputs type error in CI
kairosci May 19, 2026
1e6e7f5
fix: resolve statix warnings and disable FlakeHub cache in CI
kairosci May 19, 2026
5667e58
feat: update stateVersion to 25.11, add CI build and test jobs, add g…
kairosci May 19, 2026
32bb0bd
fix: resolve remaining statix W04 and W20 warnings
kairosci May 19, 2026
2c030e1
fix: consolidate etc attrs in maclike.nix to resolve W20
kairosci May 19, 2026
4bf7aa6
fix: update KDE ISO module path and remove conflicting hardware defau…
kairosci May 19, 2026
22460bf
fix: resolve platform/gpu prime conflict, use image.baseName for ISO,…
kairosci May 19, 2026
698072c
fix: add lib to inline module args in flake.nix
kairosci May 19, 2026
68c067a
fix: wrap inline module functions in parentheses
kairosci May 19, 2026
aff9af1
fix: use systemd.settings.Manager and kdePackages.xdg-desktop-portal-…
kairosci May 19, 2026
6026d7a
fix: remove xdg-desktop-portal-kde reference no longer in nixpkgs 25.11
kairosci May 19, 2026
8bcdf5e
fix: remove build-system job (host-specific hw), simplify CI, fix nvi…
kairosci May 19, 2026
19e49ee
fix: remove .github from paths-ignore so CI runs on workflow changes
kairosci May 19, 2026
20eeac4
feat: add iso-server, 3 ISO CI builds, rewrite tests with concrete ca…
kairosci May 19, 2026
947e415
fix: repair YAML syntax in ci.yml (duplicated job fields) and restore…
kairosci May 19, 2026
45e52aa
fix: rename iso-graphical to iso-desktop, add iso-laptop, restructure…
kairosci May 19, 2026
7765eee
fix: remove invalid iso-minimal-validation alias from flake.nix
kairosci May 19, 2026
0fe185e
fix: simplify CI, fix desktop ISO, fix vaapiVdpau rename
kairosci May 20, 2026
0724a7d
feat: add CHANGELOG.md and release workflow for automatic ISO builds
kairosci May 20, 2026
e467a12
fix: update release workflow tag pattern to support '1.0' format
kairosci May 20, 2026
9859dca
fix: migrate to nixpkgs 25.11 with compat fixes
kairosci May 20, 2026
74a3194
refactor: clean up module args, relative paths, and lib formatting
kairosci May 20, 2026
a85f188
feat: add multi-ISO build script and GitHub release CI
kairosci May 20, 2026
48e5f44
fix: disable flakehub in nix-installer-action
kairosci May 20, 2026
0b32ed3
docs: convert to English, remove titles and lists
kairosci May 20, 2026
47e1969
fix: find iso file inside result directory
kairosci May 20, 2026
f4c6f7b
chore: add MIT license file
kairosci May 20, 2026
b4e1514
refactor: convert redundant shell scripts to Nix
kairosci May 20, 2026
b0922bc
feat: enforce PR-only workflow with stricter CI and local-only ISO bu…
kairosci May 20, 2026
1608c58
fix: add validate job to CI
kairosci May 20, 2026
ff8784c
docs: restructure documentation with proper markdown and add .changelog
kairosci May 20, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
17 changes: 17 additions & 0 deletions .changelog/v1.0.0.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
# v1.0.0

feat(core): add foundation layer with flake config lib and host structure
feat(core): add boot nix locale and sysctl modules
feat(filesystem): add ZFS impermanence and disko modules
feat(security): add firewall hardening and SSH modules
feat(containers): add MicroVM host orchestrator and instance pool
feat(desktop): add KDE Plasma 6 minimal with Bora layout
feat(hardware): add CPU GPU and platform detection
feat(network): add base and DNS configuration
feat(profiles): add workstation developer server and minimal
feat(lib): add hardware database and Spring DI IoC framework
feat(tests): add pure Nix test suite with module integration
feat(ci): add CI workflows with lint eval and build
feat(ci): add release workflow with ISO generation
chore: add MIT license
docs: add architecture manual and agentic rules
14 changes: 14 additions & 0 deletions .changelog/v1.0.1.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
# v1.0.1

fix(ci): disable FlakeHub authentication in nix-installer-action
fix(ci): find ISO file inside result directory instead of direct cp
refactor(lib): remove redundant cgroup-init.sh systemd handles cgroups
refactor(desktop): prune init-desktop.sh and finalize.sh kwriteconfig6 calls
docs: convert documentation to English with proper markdown headings
docs: add .changelog directory with per version entries
feat(ci): enforce pull request only workflow on main
feat(ci): run CI exclusively on pull requests not push
feat(ci): add validate job with lint eval and security audit
chore: add MIT license file
chore: rename main branch to alpha for development
chore: restructure remote configuration
31 changes: 31 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
name: CI

on:
pull_request:
branches:
- main
paths-ignore:
- "docs/**"
- "**.md"

jobs:
validate:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: DeterminateSystems/nix-installer-action@v14
with:
flakehub: false
- uses: DeterminateSystems/magic-nix-cache-action@v8
with:
use-flakehub: false
- name: Nix linting
run: nix develop --impure --command statix check src
- name: Dead code detection
run: nix develop --impure --command deadnix src
- name: Formatting check
run: nix develop --impure --command nixpkgs-fmt --check src
- name: Library tests
run: nix-instantiate --eval --strict tests/default.nix
- name: Module integration tests
run: nix-instantiate --eval --strict tests/modules.nix
100 changes: 100 additions & 0 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,100 @@
name: Release

on:
push:
tags:
- "v*.*.*"
- "*.*"

permissions:
contents: write

jobs:
validate:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: DeterminateSystems/nix-installer-action@v14
with:
flakehub: false
- uses: DeterminateSystems/magic-nix-cache-action@v8
with:
use-flakehub: false
- name: Lint and format
run: |
nix develop --impure --command statix check src
nix develop --impure --command deadnix src
nix develop --impure --command nixpkgs-fmt --check src
- name: Evaluation tests
run: |
nix-instantiate --eval --strict tests/default.nix
nix-instantiate --eval --strict tests/modules.nix

build-iso:
runs-on: ubuntu-latest
needs: [validate]
strategy:
matrix:
variant: [minimal, desktop, laptop, server]
steps:
- uses: actions/checkout@v4
- uses: DeterminateSystems/nix-installer-action@v14
with:
flakehub: false
- uses: DeterminateSystems/magic-nix-cache-action@v8
with:
use-flakehub: false
- name: Build ISO ${{ matrix.variant }}
run: |
NIXPKGS_ALLOW_BROKEN=1 nix build --impure \
'.#packages.x86_64-linux.iso-${{ matrix.variant }}'
- name: Rename ISO
run: |
iso=$(find "$(readlink -f result)" -name "*.iso" -type f | head -1)
cp "$iso" bora-${{ matrix.variant }}.iso
- name: Upload ISO ${{ matrix.variant }}
uses: actions/upload-artifact@v4
with:
name: bora-${{ matrix.variant }}
path: bora-${{ matrix.variant }}.iso
compression-level: 0
if-no-files-found: error

release:
runs-on: ubuntu-latest
needs: [build-iso]
steps:
- uses: actions/checkout@v4
- name: Download all ISOs
uses: actions/download-artifact@v4
with:
pattern: bora-*
path: isos
merge-multiple: true
- name: Generate changelog from .changelog
run: |
TAG="${{ github.ref_name }}"
VERSION="${TAG#v}"
CHANGELOG_FILE=".changelog/${VERSION}.md"
if [ -f "$CHANGELOG_FILE" ]; then
cp "$CHANGELOG_FILE" release-notes.md
else
CHANGELOG_FILE=".changelog/${TAG}.md"
if [ -f "$CHANGELOG_FILE" ]; then
cp "$CHANGELOG_FILE" release-notes.md
else
echo "Release ${TAG}" > release-notes.md
echo "" >> release-notes.md
git log --oneline --no-decorate "$(git tag --sort=-version:refname | head -2 | tail -1)..${TAG}" 2>/dev/null \
|| git log --oneline --no-decorate "${TAG}" 2>/dev/null \
>> release-notes.md
fi
fi
- name: Create Release
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
gh release create "${{ github.ref_name }}" \
--notes-file release-notes.md \
--title "${{ github.ref_name }}" \
isos/*.iso
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
result
dist/
Loading
Loading