Add Nix and environment configuration files
- Created `.envrc` for Direnv integration to manage Nix environment. - Added `.gitignore` to exclude build artifacts and IDE files. - Introduced `flake.nix` for Nix flake configuration and development shell setup. - Generated `flake.lock` to lock dependencies for the Nix environment. - Updated `go.mod` to specify Go version 1.23. - Added `README.md` with project overview, development instructions, and troubleshooting tips.
This commit is contained in:
34
.gitignore
vendored
Normal file
34
.gitignore
vendored
Normal file
@@ -0,0 +1,34 @@
|
||||
# Binaries for programs and plugins
|
||||
*.exe
|
||||
*.exe~
|
||||
*.dll
|
||||
*.so
|
||||
*.dylib
|
||||
|
||||
# Test binary, built with `go test -c`
|
||||
*.test
|
||||
|
||||
# Output of the go coverage tool, specifically when used with LiteIDE
|
||||
*.out
|
||||
|
||||
# Dependency directories (remove the comment below to include it)
|
||||
# vendor/
|
||||
|
||||
# Go workspace file
|
||||
go.work
|
||||
|
||||
# Nix
|
||||
result
|
||||
result-*
|
||||
.direnv/
|
||||
|
||||
# IDE
|
||||
.vscode/
|
||||
.idea/
|
||||
*.swp
|
||||
*.swo
|
||||
|
||||
# OS
|
||||
.DS_Store
|
||||
Thumbs.db
|
||||
|
||||
102
README.md
Normal file
102
README.md
Normal file
@@ -0,0 +1,102 @@
|
||||
# ARR Go Client
|
||||
|
||||
A Go client for ARR applications (Radarr, Sonarr, etc.).
|
||||
|
||||
## Development with Nix
|
||||
|
||||
This project uses Nix for dependency management and development environment setup.
|
||||
|
||||
### Prerequisites
|
||||
|
||||
- [Nix](https://nixos.org/download.html) installed on your system
|
||||
- [direnv](https://direnv.net/) (optional, for automatic environment activation)
|
||||
|
||||
### Quick Start
|
||||
|
||||
1. **Enter the development shell:**
|
||||
```bash
|
||||
nix develop
|
||||
```
|
||||
|
||||
2. **Run the application:**
|
||||
```bash
|
||||
go run .
|
||||
```
|
||||
|
||||
### Development Commands
|
||||
|
||||
Once in the Nix shell, you can use standard Go commands:
|
||||
|
||||
```bash
|
||||
# Run the application
|
||||
go run .
|
||||
|
||||
# Run tests
|
||||
go test ./...
|
||||
|
||||
# Clean up dependencies
|
||||
go mod tidy
|
||||
|
||||
# Download dependencies
|
||||
go mod download
|
||||
|
||||
# Build the binary
|
||||
go build -o arr-go-client .
|
||||
```
|
||||
|
||||
### Available Tools
|
||||
|
||||
The Nix development environment includes:
|
||||
|
||||
- **Go 1.23** - Latest stable Go version available in Nix
|
||||
|
||||
### Project Structure
|
||||
|
||||
```
|
||||
arr-go-client/
|
||||
├── flake.nix # Nix flake configuration
|
||||
├── .envrc # Direnv configuration (auto-loads Nix environment)
|
||||
├── go.mod # Go module file
|
||||
├── main.go # Main application
|
||||
├── client.go # Client implementation
|
||||
├── interfaces.go # Interface definitions
|
||||
├── types.go # Type definitions
|
||||
└── radarr.go # Radarr-specific code
|
||||
```
|
||||
|
||||
### Troubleshooting
|
||||
|
||||
#### Flake Lock Issues
|
||||
|
||||
If you need to update the flake lock:
|
||||
|
||||
```bash
|
||||
nix flake update
|
||||
```
|
||||
|
||||
#### Experimental Features Disabled
|
||||
|
||||
If you get errors about experimental features being disabled, you can enable them globally:
|
||||
|
||||
1. **Edit your global Nix config:**
|
||||
```bash
|
||||
mkdir -p ~/.config/nix
|
||||
echo "experimental-features = nix-command flakes" >> ~/.config/nix/nix.conf
|
||||
```
|
||||
|
||||
2. **Or run with explicit experimental features:**
|
||||
```bash
|
||||
nix --extra-experimental-features 'nix-command flakes' develop
|
||||
```
|
||||
|
||||
### Contributing
|
||||
|
||||
1. Fork the repository
|
||||
2. Create a feature branch
|
||||
3. Make your changes
|
||||
4. Test with `nix develop` and `go test ./...`
|
||||
5. Submit a pull request
|
||||
|
||||
### License
|
||||
|
||||
[Add your license here]
|
||||
27
flake.lock
generated
Normal file
27
flake.lock
generated
Normal file
@@ -0,0 +1,27 @@
|
||||
{
|
||||
"nodes": {
|
||||
"nixpkgs": {
|
||||
"locked": {
|
||||
"lastModified": 1755615617,
|
||||
"narHash": "sha256-HMwfAJBdrr8wXAkbGhtcby1zGFvs+StOp19xNsbqdOg=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "20075955deac2583bb12f07151c2df830ef346b4",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "NixOS",
|
||||
"ref": "nixos-unstable",
|
||||
"repo": "nixpkgs",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"root": {
|
||||
"inputs": {
|
||||
"nixpkgs": "nixpkgs"
|
||||
}
|
||||
}
|
||||
},
|
||||
"root": "root",
|
||||
"version": 7
|
||||
}
|
||||
21
flake.nix
Normal file
21
flake.nix
Normal file
@@ -0,0 +1,21 @@
|
||||
{
|
||||
description = "ARR Go Client - A Go client for ARR applications";
|
||||
|
||||
inputs = {
|
||||
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
|
||||
};
|
||||
|
||||
outputs = { self, nixpkgs }:
|
||||
let
|
||||
system = "x86_64-linux";
|
||||
pkgs = nixpkgs.legacyPackages.${system};
|
||||
in
|
||||
{
|
||||
devShells.${system}.default = pkgs.mkShell {
|
||||
buildInputs = with pkgs; [
|
||||
go_1_23
|
||||
];
|
||||
};
|
||||
};
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user