{"id":45063565,"url":"https://github.com/henrirosten/dotflake","last_synced_at":"2026-02-19T10:15:13.328Z","repository":{"id":164394520,"uuid":"603691658","full_name":"henrirosten/dotflake","owner":"henrirosten","description":"My NixOS/Home Manager flake","archived":false,"fork":false,"pushed_at":"2026-02-15T12:14:19.000Z","size":179,"stargazers_count":1,"open_issues_count":1,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-02-15T18:27:11.607Z","etag":null,"topics":["declarative-config","dotfiles","flake","home-manager","linux","nix","nixos"],"latest_commit_sha":null,"homepage":"","language":"Nix","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/henrirosten.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":"AGENTS.md","dco":null,"cla":null}},"created_at":"2023-02-19T09:41:21.000Z","updated_at":"2026-02-15T18:09:31.000Z","dependencies_parsed_at":"2023-11-23T10:27:00.869Z","dependency_job_id":"5a28b300-e561-4573-a078-4bc12e59dcb6","html_url":"https://github.com/henrirosten/dotflake","commit_stats":null,"previous_names":["henrirosten/dotflake"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/henrirosten/dotflake","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/henrirosten%2Fdotflake","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/henrirosten%2Fdotflake/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/henrirosten%2Fdotflake/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/henrirosten%2Fdotflake/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/henrirosten","download_url":"https://codeload.github.com/henrirosten/dotflake/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/henrirosten%2Fdotflake/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29609559,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-19T06:47:36.664Z","status":"ssl_error","status_checked_at":"2026-02-19T06:45:47.551Z","response_time":117,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["declarative-config","dotfiles","flake","home-manager","linux","nix","nixos"],"created_at":"2026-02-19T10:15:08.124Z","updated_at":"2026-02-19T10:15:13.324Z","avatar_url":"https://github.com/henrirosten.png","language":"Nix","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Dotflake\n\nNix flake repository for:\n- NixOS host configurations\n- Standalone Home Manager profile (`hrosten`) for non-NixOS systems\n\n## Managed Hosts\n\n| Host | Purpose |\n|------|---------|\n| `x1` | ThinkPad X1 Carbon |\n| `t480` | ThinkPad T480 |\n| `generic` | VM-focused profile used for local and CI testing |\n\n## Quick Start\n\n```bash\ngit clone https://github.com/henrirosten/dotflake.git\ncd dotflake\n```\n\nInspect available outputs:\n```bash\nnix flake show --all-systems\n```\n\n## Developer Workflow\n\nEnter a flake dev shell (pre-commit tools):\n```bash\nnix develop\n```\n\nAlternative shell (includes `home-manager` from `shell.nix`):\n```bash\nnix-shell\n```\n\nFormat and lint:\n```bash\nnix fmt\n```\n\nRun flake checks without builds:\n```bash\nnix flake check --option allow-import-from-derivation false --no-build\n```\n\nRun full checks:\n```bash\nnix flake check --option allow-import-from-derivation false\n```\n\n## NixOS Usage\n\nBuild:\n```bash\nnixos-rebuild build --flake .#x1\nnixos-rebuild build --flake .#t480\n```\n\nApply:\n```bash\nsudo nixos-rebuild switch --flake .#x1\nsudo nixos-rebuild switch --flake .#t480\n```\n\n## VM Apps\n\nRun a host in QEMU:\n```bash\nnix run .#x1-vm\nnix run .#t480-vm\nnix run .#generic-vm\n```\n\nShow runner options:\n```bash\nnix run .#x1-vm -- --help\n```\n\nDefault behavior: VM disk images are deleted on exit; add `--keep-disk` to persist them.\n\nExample custom resources:\n```bash\nnix run .#x1-vm -- --ram-mb 2048 --cpus 2 --disk-size 16G --disk-image ./x1.qcow2 --keep-disk\n```\n\nShare a host directory with any VM app (mounted writable at `/mnt/host-share` in the guest):\n```bash\nnix run .#generic-vm -- --share-dir /path/to/host/dir\n```\nWhen `--share-dir` is provided, the VM autologin shell starts in `/mnt/host-share`.\n\nEnvironment overrides:\n- `NIX_DISK_IMAGE` (default: `./\u003cvm-name\u003e.qcow2`)\n- `VM_HOST_SHARE_DIR` (same effect as `--share-dir`)\n- `CODEX_HOST_AUTH_FILE` (default: `$HOME/.codex/auth.json`)\n\n### Run Graphical Apps On `generic-vm` Over SSH\n\nAll VM apps forward guest SSH to host `127.0.0.1:2222`.\n\n1. Start the VM and keep its disk:\n```bash\nnix run .#generic-vm -- --keep-disk\n```\n\n2. From another terminal, connect with X11 forwarding:\n```bash\nssh -Y -p 2222 hrosten@127.0.0.1\n```\n\n3. Launch a GUI app from the SSH session:\n```bash\nfirefox \u0026\n# or\ngedit \u0026\n```\n\nNotes:\n- Use `-Y` (trusted X11 forwarding) for better compatibility with desktop apps.\n- Your host must have a running X server for forwarded windows to appear.\n\n## Standalone Home Manager (Ubuntu and similar)\n\nInstall Nix (automatic mode):\n```bash\n./bootstrap-nix.sh\n```\n\n`bootstrap-nix.sh` also supports explicit modes:\n```bash\n./bootstrap-nix.sh auto\n./bootstrap-nix.sh multi\n./bootstrap-nix.sh single\n```\n\nApply profile:\n```bash\nnix-shell\nhome-manager switch --flake .#hrosten\n```\n\n## CI Workflows\n\n- `.github/workflows/check.yml`: formatting, lint, flake eval checks, and host build matrix\n- `.github/workflows/bootstrap-nix.yml`: bootstrap script lint + Ubuntu integration checks\n- `.github/workflows/flake-update.yml`: scheduled/manual `flake.lock` update with VM smoke check\n- `.github/workflows/zizmor.yml`: GitHub Actions workflow security linting\n\n## Repository Layout\n\n```text\nflake.nix                    # Flake entrypoint\nflake/                       # Split flake output builders\nhosts/                       # Per-host NixOS configs\nmodules/nixos/               # Reusable NixOS modules\nmodules/home/                # Reusable Home Manager modules\nusers/                       # User-specific module data and HM composition\nscripts/run-vm.sh            # VM runner template used by flake VM apps\nbootstrap-nix.sh             # Nix bootstrap helper script\n```\n\n## Contribution Notes\n\nSee `CONTRIBUTING.md` for validation commands, style conventions, and commit/PR expectations.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhenrirosten%2Fdotflake","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhenrirosten%2Fdotflake","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhenrirosten%2Fdotflake/lists"}