Compare commits

..

No commits in common. "d9f167a958f9c00900334ccfbad815fbeb3a1f6b" and "4c5b373a6db9f77d4e192a84eb7f081d58c4a9cb" have entirely different histories.

5 changed files with 2 additions and 101 deletions

1
.gitignore vendored
View file

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

View file

@ -1,65 +0,0 @@
# 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,22 +92,6 @@
"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",
@ -115,7 +99,6 @@
"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,7 +3,6 @@
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,13 +1,4 @@
{ flake, inputs, config, pkgs, ... }: { flake, config, pkgs, ... }:
let
pkgs-unstable = import inputs.nixpkgs-unstable {
inherit (pkgs) system;
config.allowUnfreePredicate = pkg: builtins.elem (pkgs.lib.getName pkg) [
"claude-code"
];
};
in
{ {
@ -22,17 +13,11 @@ in
programs.uv.enable = true; programs.uv.enable = true;
programs.claude-code = { programs.gemini-cli = {
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.