A collection of various nix utilities packaged as Nix flakes with configurable modules for NixOS, nix-darwin, and Home Manager.
| Package | Description | Type |
|---|---|---|
| opsops | SOPS but easy with 1Password integration | Rust binary |
| ndcli | Command line interface for DIM (DNS and IP Management) | Python CLI |
| dimclient | Python client for DIM (dependency of ndcli) | Python package |
| defaultbrowser | Utility to set the default browser on macOS | C binary |
Add it to your flake.nix inputs:
nixkit = {
url = "github:frostplexx/nixkit";
# or for local development:
# url = "path:/path/to/nixkit";
};Add the home manager module:
home-manager = {
sharedModules = [
inputs.nixkit.homeModules.default
];
};Add the nix module:
On NixOS:
modules = [
inputs.nixkit.nixosModules.default
];On macOS:
modules = [
inputs.nixkit.darwinModules.default
];{
nixpkgs.overlays = [ nixkit.overlays.default ];
# Now packages are available as pkgs.opsops, pkgs.ndcli, etc.
environment.systemPackages = with pkgs; [
opsops
ndcli
];
}# Install individual packages
nix profile install github:frostplexx/nixkit#opsops
nix profile install github:frostplexx/nixkit#ndcli
# Or run directly
nix run github:frostplexx/nixkit#opsopsTo set the default browser on macOS and Linux use the following:
# Enable and configure the default browser
programs.default-browser = {
enable = true;
browser = "firefox"; # Or any other browser name
};A service that lets you swipe on your trackpad to move between aerosapce spaces
# Enable and configure the default browser
programs.aerospace-swipe = {
enable = true;
haptic = false;
natural_swipe = false;
wrap_around = true;
skip_empty = true;
fingers = 3;
};{
programs.ndcli = {
enable = true;
username = "johndoe"; # Your Dim username
};
}Source: https://github.com/ionos-cloud/dim/tree/master/ndcli
You can configure custom icons on macOS using the following snippet:
environment.customIcons = {
enable = true;
icons = [
{
path = "/Applications/Notion.app";
icon = ./icons/notion.icns;
}
];
};Source: https://github.com/ryanccn/nix-darwin-custom-icons
SOPS but easy and with 1Password integration:
programs = {
opsops.enable = true;
};Source: https://github.com/frostplexx/opsops
Enter the development shell with all necessary tools:
direnv allow# Build individual packages
nix build .#opsops
# Test the built packages
./result/bin/opsops --helpThis repository uses nix-update for automated package updates:
# Update individual packages
nix-update opsops --build --commit (--version 1.2.3)
nix-update ndcli --build --commit
# Update all packages
./scripts/update.shAutomated Updates:
- GitHub Actions runs daily at 6 AM Berlin time
- Creates individual PRs for each package update
- Automatically builds and tests packages before creating PRs
nixkit/
βββ packages/ # Package definitions (nix-update compatible)
β βββ default.nix # Package set entry point
β βββ opsops/
β βββ ndcli/
β βββ dimclient/
β βββ defaultbrowser/
β
βββ modules/
β βββ home/ # Home Manager modules
β β βββ default-browser.nix
β β βββ ndcli.nix
β β βββ default.nix
β βββ shared/ # Shared NixOS/Darwin modules
β β βββ opsops.nix
β β βββ default.nix
β βββ nixos/ # NixOS-specific modules
β β βββ default.nix
β βββ darwin/ # Darwin-specific modules
β βββ default.nix
βββ flake.nix # Flake definition
βββ overlay.nix # Package overlay
βββ default.nix # Legacy Nix compatibility
βββ update.sh # Package update script
- Nix with flakes enabled
- For Home Manager modules: Home Manager
- For NixOS modules: NixOS system
- For Darwin modules: nix-darwin
The repository includes automated package updates via GitHub Actions:
- Schedule: Daily at 6 AM Berlin time
- Process: Creates individual PRs for each package update
- Safety: Builds and tests packages before creating PRs
- Manual trigger: Available via GitHub Actions interface
Personal use repository.
- Add new packages to
packages/ - Create corresponding modules in
modules/home/,modules/shared/, or platform-specific directories - Update
packages/default.nixandflake.nix - Test with
nix build .#package-name - Verify
nix-update package-nameworks for automated updates