Compare commits

...

3 commits

Author SHA1 Message Date
6f64840eb1
feat: upgrade to NixOS 25.11
- Update nixpkgs and home-manager to 25.11 release
- Update flake dependencies
- Migrate git config to settings attribute
- Replace deprecated packages (mpc-cli -> mpc, vaapiIntel -> intel-vaapi-driver)
- Fix system references to use stdenv.hostPlatform.system
- Add crowdsec module overrides
- Remove android-udev-rules from fuchsia
- Configure SSH with enableDefaultConfig = false
- Update zsh dotDir to use config.xdg.configHome
2025-12-20 16:53:59 +08:00
36633896d9
chore: remove CLAUDE.md 2025-12-20 16:52:12 +08:00
2cf0e6d474
refactor(fuchsia): remove CUPS printing service 2025-12-20 16:49:20 +08:00
16 changed files with 82 additions and 302 deletions

233
CLAUDE.md
View file

@ -1,233 +0,0 @@
# CLAUDE.md
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
## Build and Deployment Commands
### Building Configurations
```bash
# Build a NixOS configuration (creates ./result symlink)
just build <hostname>
# or
nixos-rebuild build --flake .#<hostname>
# Build home-manager configuration
home-manager build --flake .#sajenim@<hostname>
```
### Deploying Changes
```bash
# Apply NixOS configuration locally (requires sudo)
just switch <hostname>
# or
sudo nixos-rebuild switch --flake .#<hostname>
# Deploy to remote host
just deploy <hostname>
# or
nixos-rebuild switch --flake .#<hostname> --target-host <hostname> --use-remote-sudo
# Apply home-manager configuration
home-manager switch --flake .#sajenim@<hostname>
```
### Code Quality
```bash
# Format all Nix files using alejandra
nix fmt
# Check flake and evaluate all configurations
nix flake check
```
### Secret Management
```bash
# Rekey secrets using YubiKey (after adding/modifying secrets)
agenix-rekey edit <secret-name>
agenix-rekey rekey
```
## Architecture Overview
### Flake Structure
This is a NixOS flake-based configuration managing two hosts:
- **fuchsia**: Desktop workstation (gaming, development, XMonad)
- **viridian**: Server (multimedia, services, containers)
The flake follows the standard structure from Misterio77's starter configs.
### Configuration Layers
**NixOS System Configuration** (`nixos/`):
```
nixos/
├── common/
│ ├── global/ # Base system config for all hosts
│ │ ├── age.nix # Agenix secret management with YubiKey
│ │ ├── env.nix # Environment variables
│ │ ├── nix.nix # Nix daemon, flakes, garbage collection
│ │ └── ssh.nix # SSH server config
│ ├── optional/ # Opt-in features
│ │ ├── ephemeral-btrfs.nix # Impermanence with btrfs root wipe
│ │ ├── persist.nix # Persistence paths for ephemeral root
│ │ └── yubikey.nix # YubiKey support
│ └── users/ # User-specific system settings
├── fuchsia/
│ ├── configuration.nix
│ └── services/ # Desktop services (X11, pipewire, flatpak, etc.)
└── viridian/
├── configuration.nix
├── services/ # Server services (traefik, minecraft, IRC, etc.)
└── multimedia/ # *arr stack (sonarr, radarr, jellyfin, etc.)
```
**Home-Manager User Configuration** (`home-manager/`):
```
home-manager/sajenim/
├── global/ # Base home config
├── features/ # Modular user features
│ ├── cli/ # Shell, terminal utilities
│ ├── desktop/ # GUI applications, window manager
│ ├── editors/ # Text editors configuration
│ ├── games/ # Gaming-related configs
│ ├── printing/ # Printer utilities
│ └── university/ # Academic tools
├── fuchsia.nix # Desktop profile
└── viridian.nix # Server profile (minimal)
```
### Key Architectural Patterns
**Module Organization**: Configuration is split between:
- `nixos/common/global/`: Imported by ALL hosts (mandatory base config)
- `nixos/common/optional/`: Opt-in features imported per-host
- `nixos/<hostname>/`: Host-specific hardware and services
- `home-manager/sajenim/features/`: Composable user environment features
**Imports Pattern**: Each host's `configuration.nix` composes its full system by:
1. Importing `../common/global` (base system)
2. Importing selected `../common/optional/*` modules
3. Importing `../common/users/<username>` (user accounts)
4. Importing host-specific services from `./services/`
5. Setting host-specific options (hostname, firewall, etc.)
**Impermanence**: Uses opt-in persistence with ephemeral btrfs root:
- Root filesystem (`/`) wiped on every boot
- Only `/nix`, `/persist`, and `/boot` survive reboots
- Services must explicitly declare what to persist in `/persist`
- Secrets use persistent SSH keys at `/persist/etc/ssh/` for decryption
**Secret Management**:
- Encrypted with agenix using host SSH keys
- Master key stored on YubiKey for rekeying
- Rekeyed secrets stored in `nixos/common/global/secrets/rekeyed/<hostname>/`
- Decryption happens during system activation using persistent SSH keys
**Overlays**: Applied globally via `nixos/common/global/default.nix`:
- `additions`: Custom packages from `pkgs/`
- `modifications`: Patches to existing packages (e.g., dmenu theming)
- `unstable-packages`: Makes `pkgs.unstable.*` available for newer versions
**Unfree Packages**: Allowlist is centralized in `nixos/common/global/default.nix`
- Default policy: only free software
- Exceptions listed explicitly (steam, minecraft-server)
- Do NOT use `allowUnfreePredicate` in other modules (won't merge)
### Flake Inputs
External dependencies include:
- `nixpkgs` (25.05 stable), `nixpkgs-unstable`
- `home-manager` (follows nixpkgs)
- `agenix`, `agenix-rekey` (secret management)
- `impermanence` (ephemeral root filesystem)
- `crowdsec` (security)
- `nixvim` (personal Neovim config, external flake)
- `xmonad-config` (personal XMonad config, external flake)
- `nix-minecraft` (declarative Minecraft server)
Personal flakes (nixvim, xmonad-config) are maintained in separate repositories
and imported as flake inputs. They are updated independently via `nix flake update`.
## Working with This Configuration
### Adding a New Host
1. Create `nixos/<hostname>/` directory
2. Add `configuration.nix` and `hardware-configuration.nix`
3. Add SSH host keys (ed25519 and RSA) to the host directory
4. Update `flake.nix` to add the new `nixosConfiguration`
5. Configure secrets: update age.rekey to include new host key
### Adding a Service
Services are organized by host in `nixos/<hostname>/services/`:
- Create a subdirectory for complex services (e.g., `traefik/`)
- Each service gets its own `default.nix`
- Import in `nixos/<hostname>/services/default.nix` or `configuration.nix`
- Declare persistence paths if using ephemeral root
- Use agenix for any credentials
### Modifying Packages
- **Custom packages**: Add to `pkgs/` and reference in `pkgs/default.nix`
- **Patching packages**: Add patches to `overlays/patches/`, modify overlay in
`overlays/default.nix`
- **Unfree packages**: Add to allowlist in `nixos/common/global/default.nix`
### Testing Changes
1. **IMPORTANT**: Stage new files with git before building or checking
- Nix flakes only evaluate files tracked in git
- Run `git add <file>` for any new files before `nix flake check` or build
2. Build configuration: `just build <hostname>`
3. Check for evaluation errors: `nix flake check`
4. Review changes before switching
5. Switch: `just switch <hostname>` (local) or `just deploy <hostname>` (remote)
### Managing Secrets
- Secrets are encrypted per-host and stored in
`nixos/common/global/secrets/rekeyed/<hostname>/`
- Edit secrets: `agenix-rekey edit <secret-name>`
- After editing, rekey all hosts: `agenix-rekey rekey`
- YubiKey required for rekeying operations
- Host SSH keys at `/persist/etc/ssh/` are used for automatic decryption
## Important Conventions
### Network IP Allocation
This infrastructure uses the following IP range scheme to avoid conflicts:
**Allocated Ranges:**
- `192.168.50.0/24` - Home router/main LAN
- `10.1.0.0/24` - Internet sharing from fuchsia (Ethernet to printer)
- `10.2.0.0/24` - Reserved for future internet sharing from another host
- `10.3.0.0/24` - Reserved for future internet sharing from another host
- `10.39.179.0/24` - WireGuard VPN on Raspberry Pi
- `172.17.0.0/16` - Docker default bridge network (viridian)
**Conventions:**
- Internet connection sharing uses `10.N.0.0/24` where N is 1, 2, 3, etc.
- Gateway host is always `10.N.0.1`
- DHCP pools typically use `10.N.0.2` through `10.N.0.10`
- Keep VPN/tunnel ranges in the `10.30.0.0/16` and higher space
### Line Length
Keep all Nix code to a maximum of 100 characters per line for consistency.
### Module Naming
- System-level services: `nixos/<hostname>/services/<service-name>/default.nix`
- User-level features: `home-manager/sajenim/features/<category>/<feature>.nix`
### Persistence Declarations
When adding services to hosts with ephemeral root, declare persistence:
```nix
environment.persistence."/persist" = {
directories = [
"/var/lib/service-name"
];
files = [
"/var/lib/service-name/config.conf"
];
};
```
### Comments
This codebase uses structured comments to explain configuration choices:
- Block comments at file top explain module purpose
- Inline comments explain non-obvious configuration decisions
- Group related options with visual separators when helpful

97
flake.lock generated
View file

@ -8,11 +8,11 @@
"systems": "systems" "systems": "systems"
}, },
"locked": { "locked": {
"lastModified": 1761656077, "lastModified": 1762618334,
"narHash": "sha256-lsNWuj4Z+pE7s0bd2OKicOFq9bK86JE0ZGeKJbNqb94=", "narHash": "sha256-wyT7Pl6tMFbFrs8Lk/TlEs81N6L+VSybPfiIgzU8lbQ=",
"owner": "ryantm", "owner": "ryantm",
"repo": "agenix", "repo": "agenix",
"rev": "9ba0d85de3eaa7afeab493fed622008b6e4924f5", "rev": "fcdea223397448d35d9b31f798479227e80183f6",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -51,11 +51,11 @@
"nixpkgs": "nixpkgs_2" "nixpkgs": "nixpkgs_2"
}, },
"locked": { "locked": {
"lastModified": 1762466517, "lastModified": 1766008910,
"narHash": "sha256-sFlWhpLBmORSIwdhIinu2nos0xhQkUzFkO3AOHRolps=", "narHash": "sha256-mrhbMNkrkvAPQsytce3zMeDF1UVkkcj8N/Bw9n4BFUo=",
"owner": "sadjow", "owner": "sadjow",
"repo": "claude-code-nix", "repo": "claude-code-nix",
"rev": "c75a19ff3b5de3edc68512b31c406338c3c3ce65", "rev": "e39652c800e82c4f8cae68ac0bacb7bdecace7f5",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -143,6 +143,22 @@
} }
}, },
"flake-compat_2": { "flake-compat_2": {
"flake": false,
"locked": {
"lastModified": 1765121682,
"narHash": "sha256-4VBOP18BFeiPkyhy9o4ssBNQEvfvv1kXkasAYd0+rrA=",
"owner": "NixOS",
"repo": "flake-compat",
"rev": "65f23138d8d09a92e30f1e5c87611b23ef451bf3",
"type": "github"
},
"original": {
"owner": "NixOS",
"repo": "flake-compat",
"type": "github"
}
},
"flake-compat_3": {
"flake": false, "flake": false,
"locked": { "locked": {
"lastModified": 1747046372, "lastModified": 1747046372,
@ -464,16 +480,16 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1758463745, "lastModified": 1765979862,
"narHash": "sha256-uhzsV0Q0I9j2y/rfweWeGif5AWe0MGrgZ/3TjpDYdGA=", "narHash": "sha256-/r9/1KamvbHJx6I40H4HsSXnEcBAkj46ZwibhBx9kg0=",
"owner": "nix-community", "owner": "nix-community",
"repo": "home-manager", "repo": "home-manager",
"rev": "3b955f5f0a942f9f60cdc9cacb7844335d0f21c3", "rev": "d3135ab747fd9dac250ffb90b4a7e80634eacbe9",
"type": "github" "type": "github"
}, },
"original": { "original": {
"owner": "nix-community", "owner": "nix-community",
"ref": "release-25.05", "ref": "release-25.11",
"repo": "home-manager", "repo": "home-manager",
"type": "github" "type": "github"
} }
@ -547,16 +563,17 @@
}, },
"nix-jetbrains-plugins": { "nix-jetbrains-plugins": {
"inputs": { "inputs": {
"flake-compat": "flake-compat_2",
"flake-utils": "flake-utils_3", "flake-utils": "flake-utils_3",
"nixpkgs": "nixpkgs_4", "nixpkgs": "nixpkgs_4",
"systems": "systems_4" "systems": "systems_4"
}, },
"locked": { "locked": {
"lastModified": 1761996900, "lastModified": 1765666486,
"narHash": "sha256-1XURw0oFac/jDYP/TjxOOO5DWABOQ6HOuAnXS7GGP5k=", "narHash": "sha256-BZfXO+5aUgGgGKr85UdVMTUsUi2rgufzK6/jgqoEVDI=",
"owner": "theCapypara", "owner": "theCapypara",
"repo": "nix-jetbrains-plugins", "repo": "nix-jetbrains-plugins",
"rev": "5a03f5a3d0ab9b465cdab58dc03da2a7b473bc8c", "rev": "82c9b1d2e0f235d61f0941fdafd408a23483dc99",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -567,16 +584,16 @@
}, },
"nix-minecraft": { "nix-minecraft": {
"inputs": { "inputs": {
"flake-compat": "flake-compat_2", "flake-compat": "flake-compat_3",
"flake-utils": "flake-utils_4", "flake-utils": "flake-utils_4",
"nixpkgs": "nixpkgs_5" "nixpkgs": "nixpkgs_5"
}, },
"locked": { "locked": {
"lastModified": 1762480864, "lastModified": 1766023574,
"narHash": "sha256-OD3/2nATIXFEyTq3cxGUjZyBf8YlCSpIX/iJzSJbWag=", "narHash": "sha256-vx7KhTqR/UBnBUXAei3DKXJ4Nq3p7yLw+kZ03/inm8I=",
"owner": "Infinidoge", "owner": "Infinidoge",
"repo": "nix-minecraft", "repo": "nix-minecraft",
"rev": "4f3414fdfce0ddf85c35e95d07809aeb93d2f0ad", "rev": "5e0cae13ca72d3e4ef0f101b01725e25441c4ebd",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -633,11 +650,11 @@
}, },
"nixpkgs-unstable": { "nixpkgs-unstable": {
"locked": { "locked": {
"lastModified": 1762363567, "lastModified": 1765779637,
"narHash": "sha256-YRqMDEtSMbitIMj+JLpheSz0pwEr0Rmy5mC7myl17xs=", "narHash": "sha256-KJ2wa/BLSrTqDjbfyNx70ov/HdgNBCBBSQP3BIzKnv4=",
"owner": "nixos", "owner": "nixos",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "ae814fd3904b621d8ab97418f1d0f2eb0d3716f4", "rev": "1306659b587dc277866c7b69eb97e5f07864d8c4",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -681,11 +698,11 @@
}, },
"nixpkgs_2": { "nixpkgs_2": {
"locked": { "locked": {
"lastModified": 1762361079, "lastModified": 1765934234,
"narHash": "sha256-lz718rr1BDpZBYk7+G8cE6wee3PiBUpn8aomG/vLLiY=", "narHash": "sha256-pJjWUzNnjbIAMIc5gRFUuKCDQ9S1cuh3b2hKgA7Mc4A=",
"owner": "NixOS", "owner": "NixOS",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "ffcdcf99d65c61956d882df249a9be53e5902ea5", "rev": "af84f9d270d404c17699522fab95bbf928a2d92f",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -712,11 +729,11 @@
}, },
"nixpkgs_4": { "nixpkgs_4": {
"locked": { "locked": {
"lastModified": 1757745802, "lastModified": 1765472234,
"narHash": "sha256-hLEO2TPj55KcUFUU1vgtHE9UEIOjRcH/4QbmfHNF820=", "narHash": "sha256-9VvC20PJPsleGMewwcWYKGzDIyjckEz8uWmT0vCDYK0=",
"owner": "NixOS", "owner": "NixOS",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "c23193b943c6c689d70ee98ce3128239ed9e32d1", "rev": "2fbfb1d73d239d2402a8fe03963e37aab15abe8b",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -744,16 +761,16 @@
}, },
"nixpkgs_6": { "nixpkgs_6": {
"locked": { "locked": {
"lastModified": 1762233356, "lastModified": 1765838191,
"narHash": "sha256-cGS3lLTYusbEP/IJIWGgnkzIl+FA5xDvtiHyjalGr4k=", "narHash": "sha256-m5KWt1nOm76ILk/JSCxBM4MfK3rYY7Wq9/TZIIeGnT8=",
"owner": "nixos", "owner": "nixos",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "ca534a76c4afb2bdc07b681dbc11b453bab21af8", "rev": "c6f52ebd45e5925c188d1a20119978aa4ffd5ef6",
"type": "github" "type": "github"
}, },
"original": { "original": {
"owner": "nixos", "owner": "nixos",
"ref": "nixos-25.05", "ref": "nixos-25.11",
"repo": "nixpkgs", "repo": "nixpkgs",
"type": "github" "type": "github"
} }
@ -792,11 +809,11 @@
}, },
"nixpkgs_9": { "nixpkgs_9": {
"locked": { "locked": {
"lastModified": 1748460289, "lastModified": 1761373498,
"narHash": "sha256-7doLyJBzCllvqX4gszYtmZUToxKvMUrg45EUWaUYmBg=", "narHash": "sha256-Q/uhWNvd7V7k1H1ZPMy/vkx3F8C13ZcdrKjO7Jv7v0c=",
"owner": "NixOS", "owner": "NixOS",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "96ec055edbe5ee227f28cdbc3f1ddf1df5965102", "rev": "6a08e6bb4e46ff7fcbb53d409b253f6bad8a28ce",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -813,11 +830,11 @@
"nixvim": "nixvim_2" "nixvim": "nixvim_2"
}, },
"locked": { "locked": {
"lastModified": 1760970422, "lastModified": 1765715781,
"narHash": "sha256-w1pRoU2z0xkkGb2SFl16x1GVzLVErzgPiWunS+JHI+c=", "narHash": "sha256-iwCEwl0ak3J/yy063UlqSxh+fyWCeDfW60HCcBWOuGA=",
"ref": "refs/heads/master", "ref": "refs/heads/master",
"rev": "5e370bf24716430b66364666a9a512b07e249471", "rev": "ea07178de031c25a16e007564ad61cc1fd8b98e1",
"revCount": 109, "revCount": 110,
"type": "git", "type": "git",
"url": "https://git.sajenim.dev/jasmine/nixvim-config.git" "url": "https://git.sajenim.dev/jasmine/nixvim-config.git"
}, },
@ -923,11 +940,11 @@
"poetry2nix": "poetry2nix" "poetry2nix": "poetry2nix"
}, },
"locked": { "locked": {
"lastModified": 1760908465, "lastModified": 1765727347,
"narHash": "sha256-ZdyNTh/O7W7ZJJr8bAeG2kQBFREZGTQ2wXCyzr9z+RQ=", "narHash": "sha256-fiHH7CIgUSQgrPkcOzBK6B0ojDNbeFEc7IXdqGqm2IM=",
"owner": "Scrybbling-together", "owner": "Scrybbling-together",
"repo": "remarks", "repo": "remarks",
"rev": "b8bfd751cf82a47ce24763c5b220a1f4f5ab90a6", "rev": "9a6673d55df96d4985f13bc523e680df750b6e73",
"type": "github" "type": "github"
}, },
"original": { "original": {

View file

@ -3,12 +3,12 @@
inputs = { inputs = {
# Nixpkgs # Nixpkgs
nixpkgs.url = "github:nixos/nixpkgs/nixos-25.05"; nixpkgs.url = "github:nixos/nixpkgs/nixos-25.11";
nixpkgs-unstable.url = "github:nixos/nixpkgs/nixos-unstable"; nixpkgs-unstable.url = "github:nixos/nixpkgs/nixos-unstable";
# Home manager # Home manager
home-manager = { home-manager = {
url = "github:nix-community/home-manager/release-25.05"; url = "github:nix-community/home-manager/release-25.11";
inputs.nixpkgs.follows = "nixpkgs"; inputs.nixpkgs.follows = "nixpkgs";
}; };

View file

@ -18,6 +18,6 @@
unstable.rmapi unstable.rmapi
] ]
++ [ ++ [
inputs.remarks.packages.${pkgs.system}.default inputs.remarks.packages.${pkgs.stdenv.hostPlatform.system}.default
]; ];
} }

View file

@ -1,12 +1,14 @@
{...}: { {...}: {
programs.git = { programs.git = {
enable = true; enable = true;
userName = "jasmine"; settings = {
userEmail = "its.jassy@pm.me";
extraConfig = {
init.defaultBranch = "master"; init.defaultBranch = "master";
user = {
name = "jasmine";
email = "its.jassy@pm.me";
signingkey = "8563E358D4E8040E";
};
commit.gpgsign = "true"; commit.gpgsign = "true";
user.signingkey = "8563E358D4E8040E";
}; };
}; };
} }

View file

@ -2,7 +2,7 @@
# Install some applications for managing mpd # Install some applications for managing mpd
home.packages = with pkgs; [ home.packages = with pkgs; [
mpc-cli mpc
ncmpcpp ncmpcpp
]; ];

View file

@ -1,6 +1,8 @@
{...}: { {...}: {
programs.ssh = { programs.ssh = {
enable = true; enable = true;
enableDefaultConfig = false;
matchBlocks = { matchBlocks = {
"viridian" = { "viridian" = {
hostname = "viridian.home.arpa"; hostname = "viridian.home.arpa";

View file

@ -1,4 +1,4 @@
{pkgs, ...}: { {pkgs, config, ...}: {
imports = [ imports = [
./direnv.nix ./direnv.nix
./starship.nix ./starship.nix
@ -21,7 +21,7 @@
enableCompletion = true; enableCompletion = true;
# Configuration directory # Configuration directory
dotDir = ".config/zsh"; dotDir = "${config.xdg.configHome}/zsh";
shellAliases = { shellAliases = {
# Single letter aliases # Single letter aliases

View file

@ -27,10 +27,10 @@
] ]
++ [ ++ [
# Our personal neovim configuration. # Our personal neovim configuration.
inputs.nixvim.packages.${pkgs.system}.default inputs.nixvim.packages.${pkgs.stdenv.hostPlatform.system}.default
] ]
# Install jetbrains IDEs with plugins # Install jetbrains IDEs with plugins
++ (with inputs.nix-jetbrains-plugins.lib."${system}"; [ ++ (with inputs.nix-jetbrains-plugins.lib."${pkgs.stdenv.hostPlatform.system}"; [
(buildIdeWithPlugins pkgs.jetbrains "idea-ultimate" [ (buildIdeWithPlugins pkgs.jetbrains "idea-ultimate" [
"IdeaVIM" "IdeaVIM"
"gruvbox-material-dark" "gruvbox-material-dark"

View file

@ -15,7 +15,7 @@
# Picture viewer # Picture viewer
pkgs.xfce.ristretto pkgs.xfce.ristretto
# Install our XMonad and Xmobar configuration # Install our XMonad and Xmobar configuration
inputs.xmonad-config.packages.${pkgs.system}.default inputs.xmonad-config.packages.${pkgs.stdenv.hostPlatform.system}.default
]; ];
}; };

View file

@ -6,7 +6,6 @@
./flatpak ./flatpak
./internet-sharing ./internet-sharing
./libinput ./libinput
./printing
./snapper ./snapper
./ssh ./ssh
./udev ./udev

View file

@ -1,11 +0,0 @@
{...}: {
# Enable CUPS for printing services.
services.printing = {
enable = true;
# Connect to a remote CUPS server.
clientConf = ''
ServerName 192.168.50.249
ServerPort 631
'';
};
}

View file

@ -1,7 +1,6 @@
{pkgs, ...}: { {pkgs, ...}: {
# Enable necessary udev rules. # Enable necessary udev rules.
services.udev.packages = with pkgs; [ services.udev.packages = with pkgs; [
android-udev-rules
openrgb openrgb
unstable.qmk-udev-rules unstable.qmk-udev-rules
]; ];

View file

@ -39,10 +39,10 @@
enable = true; enable = true;
extraPackages = with pkgs; [ extraPackages = with pkgs; [
intel-media-driver intel-media-driver
vaapiIntel
vaapiVdpau
libvdpau-va-gl libvdpau-va-gl
libva-vdpau-driver
intel-compute-runtime intel-compute-runtime
intel-vaapi-driver
]; ];
}; };

View file

@ -15,6 +15,11 @@ in {
inputs.crowdsec.overlays.default inputs.crowdsec.overlays.default
]; ];
disabledModules = [
"services/security/crowdsec.nix"
"services/security/crowdsec-firewall-bouncer.nix"
];
age.secrets.enrollment-key = { age.secrets.enrollment-key = {
rekeyFile = ./enrollment_key.age; rekeyFile = ./enrollment_key.age;
owner = "crowdsec"; owner = "crowdsec";

View file

@ -19,7 +19,7 @@
# be accessible through 'pkgs.unstable' # be accessible through 'pkgs.unstable'
unstable-packages = final: _prev: { unstable-packages = final: _prev: {
unstable = import inputs.nixpkgs-unstable { unstable = import inputs.nixpkgs-unstable {
system = final.system; system = final.stdenv.hostPlatform.system;
config.allowUnfree = false; config.allowUnfree = false;
}; };
}; };