13 Commits

Author SHA1 Message Date
Claude 11f8ed08e9 Add 1Password GUI and CLI via NixOS programs module
Enables programs._1password (CLI) and programs._1password-gui with
polkit authorization for user chexit. allowUnfree is already set,
so packages install without additional config.

https://claude.ai/code/session_01NS2hpapno51a1Ng7hWaQKy
2026-04-19 11:24:46 +00:00
Claude 393c2e72bd Switch default shell from zsh to fish with starship prompt
Replace programs.zsh (powerlevel10k theme) with programs.fish and
starship prompt integration. Fish provides autosuggestions and syntax
highlighting out of the box, eliminating the need for separate plugins.

https://claude.ai/code/session_01NS2hpapno51a1Ng7hWaQKy
2026-04-19 11:17:14 +00:00
Vladimir e0f403143e Merge pull request #3 from Chexit/claude/add-yami-dev-stack-zHOMn
feat: add Yami dev stack module (on-demand gitea+postgres+docker+runner)
2026-04-19 02:58:52 +03:00
Claude 27cb88d8a0 feat: add Yami dev stack module (on-demand gitea+postgres+docker+runner)
https://claude.ai/code/session_017dm8ypaaWNeA27ctmwq5dn
2026-04-18 23:00:41 +00:00
Claude 18480df83b Merge remote-tracking branch 'origin/feature/small-fixes' 2026-04-17 19:51:08 +00:00
Claude 1a1df93285 Merge branch 'feature/home-manager-flakes-gaming' 2026-04-17 19:46:56 +00:00
chexit a1f5215275 typo 2026-04-17 22:37:38 +03:00
chexit e38c6d0f1c add alias and flake.lock 2026-04-17 22:37:03 +03:00
chexit d02310b8fb add throne to packages and typos 2026-04-17 22:31:00 +03:00
Vladimir 2e4775d99f Merge pull request #1 from Chexit/feature/home-manager-flakes-gaming
feat: Home Manager (NixOS module), Flakes, gaming packages
2026-04-17 22:29:02 +03:00
Claude 23375d10b1 ci: free disk space before Nix build to prevent ENOSPC on NVIDIA/CUDA packages
GitHub Actions free runners have ~14 GB total; removing unused toolchains
(dotnet, android, CodeQL, boost) reclaims ~8-10 GB needed for the full
NixOS system build.

https://claude.ai/code/session_01JwjdjwvgMGW4TcpYi4MZ6n
2026-04-17 18:53:08 +00:00
chexit 7a1d4cddd0 fix 2026-04-17 21:35:05 +03:00
chexit 68d5d45d65 add github action for checking 2026-04-17 21:29:03 +03:00
7 changed files with 277 additions and 13 deletions
+46
View File
@@ -0,0 +1,46 @@
name: Check NixOS Config
on:
pull_request:
push:
branches: [main]
workflow_dispatch:
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Free disk space
run: |
sudo rm -rf /usr/share/dotnet /usr/share/swift /usr/local/lib/android \
/opt/ghc /opt/hostedtoolcache/CodeQL /usr/local/share/boost \
"$AGENT_TOOLSDIRECTORY"
sudo docker image prune --all --force || true
df -h
- name: Install Nix
uses: cachix/install-nix-action@v27
with:
nix_path: nixpkgs=channel:nixos-unstable
extra_nix_config: |
experimental-features = nix-command flakes
accept-flake-config = true
- name: Setup Cachix
uses: cachix/cachix-action@v15
with:
name: chexit
authToken: ${{ secrets.CACHIX_AUTH_TOKEN }}
- name: Check flake syntax
run: nix flake check --no-build
- name: Build system config
run: |
nix build .#nixosConfigurations.chexit.config.system.build.toplevel \
--no-link \
--print-build-logs
+10 -2
View File
@@ -7,6 +7,7 @@
./desktop.nix ./desktop.nix
./nvidia.nix ./nvidia.nix
./shell.nix ./shell.nix
# ./yami-dev-stack.nix # uncomment to enable Yami dev stack, then set services.yami-dev-stack below
]; ];
nix = { nix = {
@@ -76,10 +77,16 @@
users.users.chexit = { users.users.chexit = {
isNormalUser = true; isNormalUser = true;
description = "chexit"; description = "chexit";
shell = pkgs.zsh; shell = pkgs.fish;
extraGroups = [ "networkmanager" "wheel" "docker" ]; extraGroups = [ "networkmanager" "wheel" "docker" ];
}; };
programs._1password.enable = true;
programs._1password-gui = {
enable = true;
polkitPolicyOwners = [ "chexit" ];
};
programs.throne = { programs.throne = {
enable = true; enable = true;
tunMode.enable = true; tunMode.enable = true;
@@ -94,7 +101,8 @@
programs.gamemode.enable = true; programs.gamemode.enable = true;
services.tailscale.enable = true; services.tailscale.enable = true;
virtualisation.docker.enable = true; # Docker is now managed by yami-dev-stack.nix when that module is enabled.
# services.yami-dev-stack = { enable = true; user = "chexit"; };
system.stateVersion = "25.11"; system.stateVersion = "25.11";
} }
Generated
+48
View File
@@ -0,0 +1,48 @@
{
"nodes": {
"home-manager": {
"inputs": {
"nixpkgs": [
"nixpkgs"
]
},
"locked": {
"lastModified": 1776454077,
"narHash": "sha256-7zSUFWsU0+jlD7WB3YAxQ84Z/iJurA5hKPm8EfEyGJk=",
"owner": "nix-community",
"repo": "home-manager",
"rev": "565e5349208fe7d0831ef959103c9bafbeac0681",
"type": "github"
},
"original": {
"owner": "nix-community",
"repo": "home-manager",
"type": "github"
}
},
"nixpkgs": {
"locked": {
"lastModified": 1776169885,
"narHash": "sha256-l/iNYDZ4bGOAFQY2q8y5OAfBBtrDAaPuRQqWaFHVRXM=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "4bd9165a9165d7b5e33ae57f3eecbcb28fb231c9",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixos-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"root": {
"inputs": {
"home-manager": "home-manager",
"nixpkgs": "nixpkgs"
}
}
},
"root": "root",
"version": 7
}
+10 -8
View File
@@ -1,18 +1,20 @@
{ pkgs, ... }: { ... }:
{ {
home.username = "chexit"; home.username = "chexit";
home.homeDirectory = "/home/chexit"; home.homeDirectory = "/home/chexit";
home.stateVersion = "25.11"; home.stateVersion = "25.11";
programs.zsh = { programs.fish = {
enable = true; enable = true;
enableCompletion = true; shellAliases = {
autosuggestion.enable = true; rebuild = "sudo nixos-rebuild switch --flake ~/nixos-config#chexit";
syntaxHighlighting.enable = true; };
initContent = '' };
source ${pkgs.zsh-powerlevel10k}/share/zsh-powerlevel10k/powerlevel10k.zsh-theme
''; programs.starship = {
enable = true;
enableFishIntegration = true;
}; };
programs.home-manager.enable = true; programs.home-manager.enable = true;
+3 -2
View File
@@ -4,7 +4,7 @@
nixpkgs.config.allowUnfree = true; nixpkgs.config.allowUnfree = true;
environment.systemPackages = with pkgs; [ environment.systemPackages = with pkgs; [
# системное # system
wget wget
git git
htop htop
@@ -14,11 +14,12 @@
kdePackages.qtstyleplugin-kvantum kdePackages.qtstyleplugin-kvantum
kdePackages.kate kdePackages.kate
# софт # soft
firefox firefox
vesktop vesktop
materialgram materialgram
termius termius
throne
# dev # dev
vscode vscode
+1 -1
View File
@@ -1,5 +1,5 @@
{ ... }: { ... }:
{ {
programs.zsh.enable = true; programs.fish.enable = true;
} }
+159
View File
@@ -0,0 +1,159 @@
{ config, lib, pkgs, ... }:
with lib;
let
cfg = config.services.yami-dev-stack;
in
{
options.services.yami-dev-stack = {
enable = mkEnableOption "Yami development stack (gitea, postgres, docker, runner)";
user = mkOption {
type = types.str;
description = "User that will own runner token and be added to docker group";
};
};
config = mkIf cfg.enable {
# ── Systemd target ─────────────────────────────────────────────────────────
# Manual-only: nothing in wantedBy, so it never starts on boot.
systemd.targets.yami-dev = {
description = "Yami development stack (gitea, postgres, docker, runner)";
wantedBy = [ ];
};
# ── PostgreSQL 16 ──────────────────────────────────────────────────────────
services.postgresql = {
enable = true;
package = pkgs.postgresql_16;
ensureDatabases = [ "gitea" ];
ensureUsers = [
{
name = "gitea";
ensureDBOwnership = true;
}
];
};
# Pull postgres under yami-dev.target; stop it when target stops.
systemd.services.postgresql = {
wantedBy = mkForce [ "yami-dev.target" ];
partOf = [ "yami-dev.target" ];
};
# ── Gitea ──────────────────────────────────────────────────────────────────
services.gitea = {
enable = true;
appName = "Yami Git";
database = {
type = "postgres";
socket = "/run/postgresql";
name = "gitea";
user = "gitea";
};
settings = {
server = {
DOMAIN = "localhost";
ROOT_URL = "http://localhost:3000/";
HTTP_ADDR = "0.0.0.0";
HTTP_PORT = 3000;
SSH_PORT = 2222;
START_SSH_SERVER = true;
LFS_START_SERVER = true;
};
service = {
DISABLE_REGISTRATION = true;
DEFAULT_KEEP_EMAIL_PRIVATE = true;
};
repository = {
DEFAULT_BRANCH = "main";
ENABLE_PUSH_CREATE_USER = true;
ENABLE_PUSH_CREATE_ORG = true;
};
actions = {
ENABLED = true;
DEFAULT_ACTIONS_URL = "github";
LOG_RETENTION_DAYS = 14;
ARTIFACT_RETENTION_DAYS = 30;
};
packages = {
ENABLED = true;
};
session = {
COOKIE_SECURE = false;
};
"cron.git_gc_repos" = {
ENABLED = true;
SCHEDULE = "@every 72h";
ARGS = "--aggressive --prune=now";
};
};
};
systemd.services.gitea = {
wantedBy = mkForce [ "yami-dev.target" ];
partOf = [ "yami-dev.target" ];
after = [ "postgresql.service" ];
requires = [ "postgresql.service" ];
};
# ── Docker ─────────────────────────────────────────────────────────────────
virtualisation.docker = {
enable = true;
enableOnBoot = false;
};
systemd.services.docker = {
wantedBy = mkForce [ "yami-dev.target" ];
partOf = [ "yami-dev.target" ];
};
users.users.${cfg.user}.extraGroups = [ "docker" ];
# ── Gitea Actions Runner ───────────────────────────────────────────────────
services.gitea-actions-runner.instances.default = {
enable = true;
name = "home-runner";
url = "http://localhost:3000";
tokenFile = "/var/lib/gitea-runner/token";
labels = [
"ubuntu-latest:docker://node:20"
"native:host"
];
};
systemd.services."gitea-runner-default" = {
wantedBy = mkForce [ "yami-dev.target" ];
partOf = [ "yami-dev.target" ];
after = [ "gitea.service" "docker.service" ];
requires = [ "gitea.service" "docker.service" ];
};
# Directory for the runner token file; owner matches the runner service user.
systemd.tmpfiles.rules = [
"d /var/lib/gitea-runner 0700 gitea-runner gitea-runner -"
];
# ── Shell aliases ──────────────────────────────────────────────────────────
environment.shellAliases = {
yami-up = "sudo systemctl start yami-dev.target && echo 'Gitea http://localhost:3000'";
yami-down = "sudo systemctl stop yami-dev.target && echo 'Yami dev stack stopped'";
yami-status = "systemctl status yami-dev.target gitea postgresql docker gitea-runner-default --no-pager";
yami-logs = "journalctl -u gitea -u gitea-runner-default -f";
};
# ── Firewall ───────────────────────────────────────────────────────────────
# Merged with existing rules (Steam etc.); does not overwrite them.
networking.firewall.allowedTCPPorts = [ 3000 2222 ];
};
}