Compare commits

..

4 commits

Author SHA1 Message Date
Julien Hémono
d9f167a958 Install Lazygit 2026-03-27 16:00:53 +01:00
Julien Hémono
2e4d57f630 Add CLAUDE.md with repo architecture and commands
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-24 22:42:29 +01:00
Julien Hémono
816796fdf4 Install claude-code from nixpkgs-unstable on LAPTOP-032
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-24 22:42:24 +01:00
Julien Hémono
0d6345f076 Add .gitignore to exclude .idea/
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-24 22:42:21 +01:00
5 changed files with 101 additions and 2 deletions

1
.gitignore vendored Normal file
View file

@ -0,0 +1 @@
.idea/

65
CLAUDE.md Normal file
View file

@ -0,0 +1,65 @@
# CLAUDE.md
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
## Overview
Personal NixOS flake-based configuration using [Numtide Blueprint](https://github.com/numtide/blueprint) for multi-host management. Manages three hosts with Home Manager for user environments.
## Commands
```bash
# Rebuild and switch the current host
sudo nixos-rebuild switch --flake .#$(hostname)
# Test without applying
sudo nixos-rebuild test --flake .#$(hostname)
# Apply home-manager for a user
home-manager switch --flake .#julien@LAPTOP-032
home-manager switch --flake .#jhemono@gwiad
# Update flake inputs
nix flake update
nix flake update nixpkgs-unstable # single input
```
## Architecture
Blueprint auto-discovers hosts and modules — no manual registration needed.
```
flake.nix (Blueprint orchestrator)
modules/
nixos/
base.nix — common system settings (bootloader, timezone, Nix store GC, system packages)
jhemono.nix — jhemono user account + SSH authorized keys
home/
user.nix — custom options: user.name, user.email
base.nix — shell (Fish), editor (Helix)
git.nix — Git + Jujutsu + GitHub CLI
hosts/
gwiad/ — ThinkPad T14 AMD workstation, Sway/Wayland
sesame/ — home server (Forgejo, Nextcloud, Mailu, Nginx, sops-nix secrets)
LAPTOP-032/ — work laptop, GNOME
```
## Hosts
**gwiad** — personal workstation
- nixos-hardware: `lenovo-thinkpad-t14-amd-gen3`
- Sway + Waybar, btrbk snapshots, syncthing
**sesame** — home server (`*.hemono.fr` domains)
- Services: Forgejo (`git`), Nextcloud (`suite`), Mailu (`mail`), Transmission, Syncthing
- All HTTPS via ACME; SSH-key-only access
- Secrets via sops-nix (private `mysecrets` repo)
**LAPTOP-032** — work laptop
- GNOME/GDM, Docker (rootless), claude-code (from `nixpkgs-unstable`), UV, Node.js
## Key Conventions
- `nixpkgs-unstable` overlay is used when a package isn't available or outdated in the stable channel (e.g., `claude-code`)
- Home Manager modules receive user info via the custom `user.name` / `user.email` options defined in `modules/home/user.nix`
- Host-specific files live entirely under `hosts/<hostname>/`; shared logic goes in `modules/`

17
flake.lock generated
View file

@ -92,6 +92,22 @@
"type": "github" "type": "github"
} }
}, },
"nixpkgs-unstable": {
"locked": {
"lastModified": 1774106199,
"narHash": "sha256-US5Tda2sKmjrg2lNHQL3jRQ6p96cgfWh3J1QBliQ8Ws=",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "6c9a78c09ff4d6c21d0319114873508a6ec01655",
"type": "github"
},
"original": {
"owner": "nixos",
"ref": "nixos-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"root": { "root": {
"inputs": { "inputs": {
"blueprint": "blueprint", "blueprint": "blueprint",
@ -99,6 +115,7 @@
"mysecrets": "mysecrets", "mysecrets": "mysecrets",
"nixos-hardware": "nixos-hardware", "nixos-hardware": "nixos-hardware",
"nixpkgs": "nixpkgs", "nixpkgs": "nixpkgs",
"nixpkgs-unstable": "nixpkgs-unstable",
"sops-nix": "sops-nix" "sops-nix": "sops-nix"
} }
}, },

View file

@ -3,6 +3,7 @@
inputs = { inputs = {
nixpkgs.url = "github:nixos/nixpkgs/nixos-25.11"; nixpkgs.url = "github:nixos/nixpkgs/nixos-25.11";
nixpkgs-unstable.url = "github:nixos/nixpkgs/nixos-unstable";
blueprint = { blueprint = {
url = "github:numtide/blueprint"; url = "github:numtide/blueprint";

View file

@ -1,4 +1,13 @@
{ flake, config, pkgs, ... }: { flake, inputs, config, pkgs, ... }:
let
pkgs-unstable = import inputs.nixpkgs-unstable {
inherit (pkgs) system;
config.allowUnfreePredicate = pkg: builtins.elem (pkgs.lib.getName pkg) [
"claude-code"
];
};
in
{ {
@ -13,11 +22,17 @@
programs.uv.enable = true; programs.uv.enable = true;
programs.gemini-cli = { programs.claude-code = {
enable = true;
package = pkgs-unstable.claude-code;
};
programs.lazygit = {
enable = true; enable = true;
}; };
home.packages = with pkgs; [ home.packages = with pkgs; [
wl-clipboard
]; ];
# Let Home Manager install and manage itself. # Let Home Manager install and manage itself.