255 lines
5.4 KiB
Markdown
255 lines
5.4 KiB
Markdown
# m3ta-nixpkgs
|
|
|
|
My personal Nix repository containing custom packages, overlays, NixOS modules, and Home Manager modules.
|
|
|
|
## Features
|
|
|
|
- 🎁 **Custom Packages**: Collection of personal Nix packages
|
|
- 🔄 **Overlays**: Package modifications and enhancements
|
|
- ⚙️ **NixOS Modules**: System-level configuration modules
|
|
- 🏠 **Home Manager Modules**: User-level configuration modules
|
|
- ❄️ **Flakes Only**: Modern Nix flakes support (no channels)
|
|
|
|
## Repository Structure
|
|
|
|
```
|
|
m3ta-nixpkgs/
|
|
├── flake.nix # Main flake configuration
|
|
├── pkgs/ # Custom packages
|
|
│ ├── default.nix # Package registry
|
|
│ ├── code2prompt/
|
|
│ ├── hyprpaper-random/
|
|
│ ├── launch-webapp/
|
|
│ ├── msty-studio/
|
|
│ ├── pomodoro-timer/
|
|
│ ├── tuxedo-backlight/
|
|
│ └── zellij-ps/
|
|
├── overlays/ # Overlays
|
|
│ ├── default.nix
|
|
│ └── mods/ # Package modifications
|
|
│ ├── default.nix
|
|
│ └── n8n.nix
|
|
├── modules/
|
|
│ ├── nixos/ # NixOS modules
|
|
│ │ └── default.nix
|
|
│ └── home-manager/ # Home Manager modules
|
|
│ ├── default.nix
|
|
│ └── zellij-ps.nix
|
|
└── templates/ # Templates for new packages/modules
|
|
```
|
|
|
|
## Usage
|
|
|
|
### Adding to Your Flake
|
|
|
|
Add this repository to your flake inputs:
|
|
|
|
```nix
|
|
{
|
|
inputs = {
|
|
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
|
|
m3ta-nixpkgs.url = "git+https://code.m3ta.dev/m3tam3re/nixpkgs";
|
|
};
|
|
}
|
|
```
|
|
|
|
### Using Packages in NixOS Configuration
|
|
|
|
#### Method 1: Using the Overlay
|
|
|
|
```nix
|
|
{
|
|
nixpkgs.overlays = [
|
|
inputs.m3ta-nixpkgs.overlays.default
|
|
];
|
|
|
|
environment.systemPackages = with pkgs; [
|
|
code2prompt
|
|
hyprpaper-random
|
|
msty-studio
|
|
# ... any other custom packages
|
|
];
|
|
}
|
|
```
|
|
|
|
#### Method 2: Direct Package Reference
|
|
|
|
```nix
|
|
{
|
|
environment.systemPackages = [
|
|
inputs.m3ta-nixpkgs.packages.${system}.code2prompt
|
|
inputs.m3ta-nixpkgs.packages.${system}.hyprpaper-random
|
|
];
|
|
}
|
|
```
|
|
|
|
### Using in Home Manager
|
|
|
|
#### With Overlay
|
|
|
|
```nix
|
|
{
|
|
nixpkgs.overlays = [
|
|
inputs.m3ta-nixpkgs.overlays.default
|
|
];
|
|
|
|
home.packages = with pkgs; [
|
|
zellij-ps
|
|
pomodoro-timer
|
|
];
|
|
}
|
|
```
|
|
|
|
#### With Home Manager Modules
|
|
|
|
```nix
|
|
{
|
|
imports = [
|
|
inputs.m3ta-nixpkgs.homeManagerModules.default
|
|
# Or specific modules:
|
|
# inputs.m3ta-nixpkgs.homeManagerModules.zellij-ps
|
|
];
|
|
|
|
# Module-specific configuration here
|
|
}
|
|
```
|
|
|
|
### Using NixOS Modules
|
|
|
|
```nix
|
|
{
|
|
imports = [
|
|
inputs.m3ta-nixpkgs.nixosModules.default
|
|
];
|
|
|
|
# Your custom module options will be available here
|
|
}
|
|
```
|
|
|
|
### Building Packages Directly
|
|
|
|
```bash
|
|
# Build a specific package
|
|
nix build git+https://code.m3ta.dev/m3tam3re/nixpkgs#code2prompt
|
|
|
|
# Run a package without installing
|
|
nix run git+https://code.m3ta.dev/m3tam3re/nixpkgs#zellij-ps
|
|
|
|
# Install to your profile
|
|
nix profile install git+https://code.m3ta.dev/m3tam3re/nixpkgs#msty-studio
|
|
|
|
# List all available packages
|
|
nix flake show git+https://code.m3ta.dev/m3tam3re/nixpkgs
|
|
```
|
|
|
|
## Development
|
|
|
|
### Setting Up Development Environment
|
|
|
|
```bash
|
|
# Clone the repository
|
|
git clone https://code.m3ta.dev/m3tam3re/nixpkgs
|
|
cd m3ta-nixpkgs
|
|
|
|
# Enter development shell
|
|
nix develop
|
|
|
|
# Check flake validity
|
|
nix flake check
|
|
|
|
# Format code
|
|
nix fmt
|
|
```
|
|
|
|
### Adding a New Package
|
|
|
|
1. Create a new directory under `pkgs/`:
|
|
|
|
```bash
|
|
mkdir pkgs/my-package
|
|
```
|
|
|
|
2. Create `pkgs/my-package/default.nix`:
|
|
|
|
```nix
|
|
{
|
|
lib,
|
|
stdenv,
|
|
fetchFromGitHub,
|
|
}:
|
|
stdenv.mkDerivation rec {
|
|
pname = "my-package";
|
|
version = "1.0.0";
|
|
|
|
src = fetchFromGitHub {
|
|
owner = "owner";
|
|
repo = "repo";
|
|
rev = "v${version}";
|
|
hash = "sha256-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=";
|
|
};
|
|
|
|
meta = with lib; {
|
|
description = "Description of my package";
|
|
homepage = "https://github.com/owner/repo";
|
|
license = licenses.mit;
|
|
maintainers = with maintainers; [ ];
|
|
platforms = platforms.linux;
|
|
};
|
|
}
|
|
```
|
|
|
|
3. Add to `pkgs/default.nix`:
|
|
|
|
```nix
|
|
{
|
|
# ... existing packages ...
|
|
my-package = pkgs.callPackage ./my-package {};
|
|
}
|
|
```
|
|
|
|
### Adding a New NixOS Module
|
|
|
|
1. Create `modules/nixos/my-module.nix`
|
|
2. Add import to `modules/nixos/default.nix`
|
|
3. Update `flake.nix` to expose it:
|
|
|
|
```nix
|
|
nixosModules = {
|
|
default = ./modules/nixos;
|
|
my-module = ./modules/nixos/my-module.nix;
|
|
};
|
|
```
|
|
|
|
### Adding a New Home Manager Module
|
|
|
|
1. Create `modules/home-manager/my-module.nix`
|
|
2. Add to `modules/home-manager/default.nix`
|
|
3. Update `flake.nix` to expose it:
|
|
|
|
```nix
|
|
homeManagerModules = {
|
|
default = import ./modules/home-manager;
|
|
my-module = import ./modules/home-manager/my-module.nix;
|
|
};
|
|
```
|
|
|
|
## Available Packages
|
|
|
|
| Package | Description |
|
|
| ------------------ | ------------------------------------- |
|
|
| `code2prompt` | Convert code to prompts |
|
|
| `hyprpaper-random` | Random wallpaper setter for Hyprpaper |
|
|
| `launch-webapp` | Launch web applications |
|
|
| `msty-studio` | Msty Studio application |
|
|
| `pomodoro-timer` | Pomodoro timer utility |
|
|
| `tuxedo-backlight` | Backlight control for Tuxedo laptops |
|
|
| `zellij-ps` | Process viewer for Zellij |
|
|
|
|
## License
|
|
|
|
Individual packages may have their own licenses. Check each package's `meta.license` attribute.
|
|
|
|
## Maintainer
|
|
|
|
[@m3tam3re](https://github.com/m3tam3re)
|