diff --git a/README.md b/README.md index 46656e6..7d28bf7 100644 --- a/README.md +++ b/README.md @@ -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. \ No newline at end of file +The current configuration provides a fallback using the local nixpkgs tmux package to ensure reliability across different environments. \ No newline at end of file diff --git a/flake.lock b/flake.lock new file mode 100644 index 0000000..8e14017 --- /dev/null +++ b/flake.lock @@ -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 +} diff --git a/flake.nix b/flake.nix index 3b7219c..5a2ca57 100644 --- a/flake.nix +++ b/flake.nix @@ -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 ]; + }) + ]; }; - }); + }; } \ No newline at end of file