more stuff

This commit is contained in:
Tyler Mac
2026-08-19 20:01:48 -04:00
parent d5dea98d07
commit cde5644b3e
3 changed files with 143 additions and 94 deletions
+31 -79
View File
@@ -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,7 +11,28 @@ 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*
@@ -27,80 +42,17 @@ This repository contains a Nix flake configuration for setting up a development
- **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
View File
@@ -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
}
+14 -14
View File
@@ -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 ];
})
];
};
};
});
}