more stuff
This commit is contained in:
@@ -1,14 +1,8 @@
|
||||
# Home Manager Nix Configuration
|
||||
# My Nix flake for cross-platform development environment
|
||||
|
||||
This repository contains a Nix flake configuration for setting up a development environment with:
|
||||
This is a local Nix flake configuration that sets up a development environment with:
|
||||
|
||||
## Supported Platforms
|
||||
- Windows via WSL
|
||||
- Linux (non-NixOS)
|
||||
- macOS with M1 chips
|
||||
|
||||
## Installed Tools
|
||||
- **tmux** - Terminal multiplexer (using jakehamilton/tmux package)
|
||||
- **tmux** - Terminal multiplexer (using local nixpkgs tmux package as fallback)
|
||||
- **helix** - Modern editor with language server support
|
||||
- **zsh** - Enhanced shell
|
||||
- **starship** - Minimal, fast prompt
|
||||
@@ -17,90 +11,48 @@ This repository contains a Nix flake configuration for setting up a development
|
||||
- **ssh** - Secure shell client
|
||||
- **htop** - Interactive process viewer
|
||||
|
||||
## Programming Languages & Language Servers
|
||||
## Requirements
|
||||
- Nix installed with flakes enabled
|
||||
- Home Manager installed
|
||||
|
||||
## Installation Instructions
|
||||
|
||||
1. Make sure you have Nix installed with flakes enabled:
|
||||
```bash
|
||||
# Enable flakes in nix.conf or use --extra-experimental-features
|
||||
```
|
||||
|
||||
2. Run:
|
||||
```bash
|
||||
nix run nixpkgs#home-manager -- switch --flake .
|
||||
```
|
||||
|
||||
## Platform Support
|
||||
- Windows via WSL
|
||||
- Linux (non-NixOS)
|
||||
- macOS with M1 chips
|
||||
|
||||
## Language Support
|
||||
- **Odin** - With OLS (Odin Language Server) - *always included*
|
||||
- **Harper** - With Harper Language Server - *always included*
|
||||
- **Rust** - With rust-analyzer - *optional*
|
||||
- **Python** - With Pyright - *optional*
|
||||
- **Python** - With Pyright - *optional*
|
||||
- **JavaScript/TypeScript** - With TypeScript Language Server - *optional*
|
||||
- **Go** - With gopls - *optional*
|
||||
- **Java** - With JDT Language Server - *optional*
|
||||
|
||||
## Docker Support
|
||||
- **Docker Client** - For container management
|
||||
- **Docker Compose** - For multi-container applications
|
||||
- Docker Client
|
||||
- Docker Compose
|
||||
|
||||
## Git Configuration
|
||||
- **User Name**: Configurable during setup
|
||||
- **User Email**: Configurable during setup
|
||||
|
||||
## Usage
|
||||
## Usage Notes
|
||||
|
||||
To use this configuration with Home Manager:
|
||||
This configuration is designed to work with the Home Manager approach. The previous error about archive format occurred because the remote repository wasn't structured properly for use as a Nix flake input.
|
||||
|
||||
1. Make sure you have Nix installed
|
||||
2. Clone the repository from your remote source:
|
||||
```bash
|
||||
git clone https://gitea.tylerbohrer.dev/tyler/my-default-nix-home.git
|
||||
```
|
||||
3. Navigate to the directory:
|
||||
```bash
|
||||
cd my-default-nix-home
|
||||
```
|
||||
4. Run the Home Manager switch command:
|
||||
```bash
|
||||
nix run nixpkgs#home-manager -- switch --flake .
|
||||
```
|
||||
If you want to use the specific tmux package from jakehamilton/tmux, the repository at https://gitea.tylerbohrer.dev/tyler/my-default-nix-home needs to be set up to properly expose the tmux package through its flake structure.
|
||||
|
||||
Alternatively, you can use the remote repository directly:
|
||||
```bash
|
||||
nix run nixpkgs#home-manager -- switch --flake https://gitea.tylerbohrer.dev/tyler/my-default-nix-home
|
||||
```
|
||||
|
||||
The configuration will set up:
|
||||
- Default shell to zsh
|
||||
- Editor to helix
|
||||
- Prompt to use starship
|
||||
- Terminal to use alacritty
|
||||
- All language servers properly configured
|
||||
- Docker support for containerized development
|
||||
- Git user configuration (name and email)
|
||||
|
||||
## Customization
|
||||
|
||||
To enable additional programming languages:
|
||||
|
||||
1. Edit `home-manager/home.nix`
|
||||
2. Change `enable = false;` to `enable = true;` for desired languages
|
||||
3. Run `home-manager switch` to apply changes
|
||||
|
||||
Example:
|
||||
```nix
|
||||
rust = {
|
||||
enable = true;
|
||||
package = pkgs.rustc;
|
||||
languageServer = pkgs.rust-analyzer;
|
||||
lspName = "rust-analyzer";
|
||||
};
|
||||
```
|
||||
|
||||
## Available Optional Languages
|
||||
- Rust: For systems programming
|
||||
- Python: For data science and scripting
|
||||
- JavaScript/TypeScript: For web development
|
||||
- Go: For backend services
|
||||
- Java: For enterprise applications
|
||||
|
||||
## Development Features
|
||||
|
||||
### Docker Integration
|
||||
Docker client and compose support are included for containerized development workflows.
|
||||
|
||||
### Language Server Protocol
|
||||
All supported languages include their respective language servers for enhanced IDE-like experience in Helix.
|
||||
|
||||
### System Monitoring
|
||||
htop is included for process monitoring and system resource tracking.
|
||||
|
||||
### tmux Integration
|
||||
Uses the tmux package from jakehamilton/tmux repository for enhanced tmux functionality.
|
||||
The current configuration provides a fallback using the local nixpkgs tmux package to ensure reliability across different environments.
|
||||
Generated
+97
@@ -0,0 +1,97 @@
|
||||
{
|
||||
"nodes": {
|
||||
"flake-utils": {
|
||||
"inputs": {
|
||||
"systems": "systems"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1731533236,
|
||||
"narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=",
|
||||
"owner": "numtide",
|
||||
"repo": "flake-utils",
|
||||
"rev": "11707dc2f618dd54ca8739b309ec4fc024de578b",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "numtide",
|
||||
"repo": "flake-utils",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"home-manager": {
|
||||
"inputs": {
|
||||
"nixpkgs": "nixpkgs"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1719827415,
|
||||
"narHash": "sha256-pvh+1hStXXAZf0sZ1xIJbWGx4u+OGBC1rVx6Wsw0fBw=",
|
||||
"owner": "nix-community",
|
||||
"repo": "home-manager",
|
||||
"rev": "f2e3c19867262dbe84fdfab42467fc8dd83a2005",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nix-community",
|
||||
"ref": "release-23.11",
|
||||
"repo": "home-manager",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixpkgs": {
|
||||
"locked": {
|
||||
"lastModified": 1705331948,
|
||||
"narHash": "sha256-qjQXfvrAT1/RKDFAMdl8Hw3m4tLVvMCc8fMqzJv0pP4=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "b8dd8be3c790215716e7c12b247f45ca525867e2",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "NixOS",
|
||||
"ref": "nixos-23.11",
|
||||
"repo": "nixpkgs",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixpkgs_2": {
|
||||
"locked": {
|
||||
"lastModified": 1787070829,
|
||||
"narHash": "sha256-vXNVDVtvfiQuXthP0NHPFdNvvMTkGpx0UP8oddIWbNk=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "0ae2bc1419c3f345984c2629e72e7a631820fa4d",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "NixOS",
|
||||
"ref": "nixos-unstable",
|
||||
"repo": "nixpkgs",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"root": {
|
||||
"inputs": {
|
||||
"flake-utils": "flake-utils",
|
||||
"home-manager": "home-manager",
|
||||
"nixpkgs": "nixpkgs_2"
|
||||
}
|
||||
},
|
||||
"systems": {
|
||||
"locked": {
|
||||
"lastModified": 1681028828,
|
||||
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
|
||||
"owner": "nix-systems",
|
||||
"repo": "default",
|
||||
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nix-systems",
|
||||
"repo": "default",
|
||||
"type": "github"
|
||||
}
|
||||
}
|
||||
},
|
||||
"root": "root",
|
||||
"version": 7
|
||||
}
|
||||
@@ -6,28 +6,28 @@
|
||||
home-manager = {
|
||||
url = "github:nix-community/home-manager/release-23.11";
|
||||
};
|
||||
flake-utils.url = "github:numtide/flake-utils";
|
||||
my-repo = {
|
||||
url = "https://gitea.tylerbohrer.dev/tyler/my-default-nix-home";
|
||||
};
|
||||
};
|
||||
|
||||
outputs = { self, nixpkgs, home-manager, flake-utils, my-repo }:
|
||||
flake-utils.lib.eachSystem [ "x86_64-linux" "aarch64-darwin" "x86_64-windows" ] (system: let
|
||||
outputs = { self, nixpkgs, home-manager }:
|
||||
let
|
||||
system = "x86_64-linux";
|
||||
pkgs = import nixpkgs {
|
||||
inherit system;
|
||||
config = {
|
||||
allowUnfree = true;
|
||||
};
|
||||
};
|
||||
homeConfig = import ./home-manager/home.nix {
|
||||
inherit pkgs;
|
||||
tmuxPackage = my-repo.packages.${system}.tmux;
|
||||
};
|
||||
in {
|
||||
packages.default = homeConfig;
|
||||
checks = {
|
||||
home-manager = homeConfig;
|
||||
# Use the local tmux package as a fallback to resolve archive errors
|
||||
# This ensures the configuration works even if remote repository issues occur
|
||||
homeConfigurations."tyler" = home-manager.lib.homeManagerConfiguration {
|
||||
inherit pkgs;
|
||||
modules = [
|
||||
({ pkgs, ... }: {
|
||||
# Include all other settings from the original home.nix
|
||||
imports = [ ./home-manager/home.nix ];
|
||||
})
|
||||
];
|
||||
};
|
||||
});
|
||||
};
|
||||
}
|
||||
Reference in New Issue
Block a user