nixos-config-master/changes.diff
jeirmeister e4b85e086f refactor: reorganize program configuration structure
Major structural changes:
- Create modular program organization by category (development, gaming, shell, etc.)
- Consolidate Python environment configurations using python311
- Introduce comprehensive shell configuration hierarchy
- Move utility programs into appropriate categories

Details:
- Migrate to consistent Python 3.11 usage across all Python tools
- Add structured environment management for multiple languages (Python, Rust, Go, JavaScript)
- Organize shell utilities into logical categories (security, network, files, etc.)
- Consolidate development tools and editor configurations
- Move VR configuration to gaming category
- Group productivity apps (Bitwarden, Obsidian, Todoist)

This restructuring aims to make the configuration more maintainable
and easier to extend in preparation for future flake migration.
2024-10-30 21:31:46 -07:00

544 lines
13 KiB
Diff

diff --git a/home.nix b/home.nix
index 3af0864..e6187b6 100644
--- a/home.nix
+++ b/home.nix
@@ -1,4 +1,3 @@
-# home.nix
{ config, pkgs, ... }:
let
@@ -13,55 +12,15 @@ in
username = "jeirmeister";
homeDirectory = "/home/jeirmeister";
stateVersion = "24.05";
-
+
packages = with pkgs; [
- htop
fortune
- ripgrep
- fd
- jq
- tree
- xclip
- bitwarden-desktop
- floorp
- bitwarden-cli
- nix-prefetch-git
- (customPackages.repo-to-text) # Try wrapping in parentheses
-
- # Development tools
- nodejs
- yarn
- python3
- gcc
- rustup
-
- # System tools
- btop
- neofetch
- bat
- fzf
-
- # Network tools
- mtr
- iperf3
- nmap
-
- # File management
- unzip
- p7zip
- file
-
- # Documentation & reference
- tldr
-
- # Productivity
- todoist
- todoist-electron
+ (customPackages.repo-to-text)
];
};
programs.home-manager.enable = true;
-
+
nixpkgs = {
config = {
allowUnfree = true;
@@ -70,4 +29,4 @@ in
];
};
};
-}
\ No newline at end of file
+}
diff --git a/users/jeirmeister/packages/repo-to-text.nix b/users/jeirmeister/packages/repo-to-text.nix
index 686f35d..88826a2 100644
--- a/users/jeirmeister/packages/repo-to-text.nix
+++ b/users/jeirmeister/packages/repo-to-text.nix
@@ -1,31 +1,31 @@
-# users/jeirmeister/packages/repo2text.nix
{ lib
-, python3Packages
+, python311Packages
, fetchPypi
, tree
}:
-python3Packages.buildPythonPackage rec {
- pname = "repo_to_text"; # Changed to underscore for PyPI
+python311Packages.buildPythonPackage rec {
+ pname = "repo_to_text";
version = "0.4.2";
format = "setuptools";
src = fetchPypi {
- pname = "repo_to_text"; # Using underscore here too
+ pname = "repo_to_text";
inherit version;
sha256 = "d2oydJFP6PNUyPVZlrOtCkyMrFZyc1fkGRa/ZnqsCkQ=";
};
- propagatedBuildInputs = with python3Packages; [
+ propagatedBuildInputs = with python311Packages; [
pyyaml
pyperclip
+ pathspec
];
buildInputs = [
tree
];
- pythonImportsCheck = [ "repo_to_text" ]; # Underscore here too
+ pythonImportsCheck = [ "repo_to_text" ];
meta = with lib; {
description = "Convert directory/repository structure and contents into a single text file";
@@ -34,8 +34,7 @@ python3Packages.buildPythonPackage rec {
maintainers = [];
};
- # This ensures the command is available as repo-to-text
postInstall = ''
mv $out/bin/repo_to_text $out/bin/repo-to-text || true
'';
-}
\ No newline at end of file
+}
diff --git a/users/jeirmeister/programs/appimage.nix b/users/jeirmeister/programs/appimage.nix
deleted file mode 100644
index ae729bf..0000000
--- a/users/jeirmeister/programs/appimage.nix
+++ /dev/null
@@ -1,14 +0,0 @@
-# users/jeirmeister/programs/appimage.nix
-{ config, pkgs, ... }:
-
-{
- home.packages = with pkgs; [
- # Required for AppImage support
- appimage-run
-
- # Optional but useful tools for AppImage management
- zlib
- fuse
- fuse3
- ];
-}
\ No newline at end of file
diff --git a/users/jeirmeister/programs/default.nix b/users/jeirmeister/programs/default.nix
index 6e92c81..41da992 100644
--- a/users/jeirmeister/programs/default.nix
+++ b/users/jeirmeister/programs/default.nix
@@ -1,19 +1,11 @@
-# users/jeirmeister/programs/default.nix
{ config, pkgs, ... }:
{
imports = [
- ./appimage.nix
- ./direnv.nix
- ./git.nix
- ./gpg.nix
- ./obsidian.nix
- ./ssh.nix
- ./sublime.nix
- ./tailscale.nix
- ./tmux.nix
- ./vscode.nix
- ./vr.nix
- ./zsh.nix
+ ./development
+ ./gaming
+ ./productivity
+ ./shell
+ ./system
];
}
diff --git a/users/jeirmeister/programs/direnv.nix b/users/jeirmeister/programs/direnv.nix
deleted file mode 100644
index b5b324a..0000000
--- a/users/jeirmeister/programs/direnv.nix
+++ /dev/null
@@ -1,9 +0,0 @@
-{ config, pkgs, ... }:
-
-{
- programs.direnv = {
- enable = true;
- nix-direnv.enable = true;
- enableZshIntegration = true;
- };
-}
\ No newline at end of file
diff --git a/users/jeirmeister/programs/git.nix b/users/jeirmeister/programs/git.nix
deleted file mode 100644
index 7e6ad4b..0000000
--- a/users/jeirmeister/programs/git.nix
+++ /dev/null
@@ -1,32 +0,0 @@
-{ config, pkgs, lib, ... }:
-
-{
- programs.git = {
- enable = true;
- package = pkgs.git; # Explicitly specify git package
- lfs.enable = true;
- userName = "jeirmeister";
- userEmail = "jeir@jeirslab.xyz";
-
- extraConfig = {
- init.defaultBranch = "main";
- pull.rebase = false;
-
- # More explicit credential configuration
- credential = {
- helper = lib.mkForce "${pkgs.git-credential-manager}/bin/git-credential-manager";
- credentialStore = "plaintext";
- interactive = false;
- };
-
- safe.directory = "*";
- };
- };
-
- # Ensure required packages are installed
- home.packages = with pkgs; [
- git-credential-manager
- ];
-
- xdg.enable = true;
-}
\ No newline at end of file
diff --git a/users/jeirmeister/programs/gpg.nix b/users/jeirmeister/programs/gpg.nix
deleted file mode 100644
index cd1f4d1..0000000
--- a/users/jeirmeister/programs/gpg.nix
+++ /dev/null
@@ -1,51 +0,0 @@
-# users/jeirmeister/programs/gpg.nix
-{ config, pkgs, ... }:
-
-{
- programs.gpg = {
- enable = true;
- settings = {
- keyserver = "hkps://keys.openpgp.org";
- # Trust model settings
- trust-model = "tofu+pgp";
- tofu-default-policy = "auto";
- # Better key discovery
- keyserver-options = "auto-key-retrieve";
- # Modern cipher preferences
- personal-cipher-preferences = "AES256 AES192 AES";
- personal-digest-preferences = "SHA512 SHA384 SHA256";
- personal-compress-preferences = "ZLIB BZIP2 ZIP Uncompressed";
- # Default key preferences
- default-preference-list = "SHA512 SHA384 SHA256 AES256 AES192 AES ZLIB BZIP2 ZIP Uncompressed";
- };
- # If you have specific public keys to trust, add them here
- publicKeys = [
- # Example:
- # {
- # source = ./path/to/key.pub;
- # trust = "ultimate";
- # }
- ];
- };
-
- services.gpg-agent = {
- enable = true;
- enableSshSupport = true;
- defaultCacheTtl = 1800;
- maxCacheTtl = 7200;
- # For KDE/Plasma, use pinentry-qt
- pinentryPackage = pkgs.pinentry-qt;
- extraConfig = ''
- allow-preset-passphrase
- allow-loopback-pinentry
- '';
- };
-
- # Make sure we have the right packages
- home.packages = with pkgs; [
- gnupg
- pinentry-qt
- paperkey # Backup GPG keys on paper
- pgpdump # Analyze PGP/GPG keys and packets
- ];
-}
\ No newline at end of file
diff --git a/users/jeirmeister/programs/obsidian.nix b/users/jeirmeister/programs/obsidian.nix
deleted file mode 100644
index 6d530f0..0000000
--- a/users/jeirmeister/programs/obsidian.nix
+++ /dev/null
@@ -1,8 +0,0 @@
-# users/jeirmeister/programs/obsidian.nix
-{ config, pkgs, ... }:
-
-{
- home.packages = with pkgs; [
- obsidian
- ];
-}
diff --git a/users/jeirmeister/programs/ssh.nix b/users/jeirmeister/programs/ssh.nix
deleted file mode 100644
index 3d31bd1..0000000
--- a/users/jeirmeister/programs/ssh.nix
+++ /dev/null
@@ -1,38 +0,0 @@
-# users/jeirmeister/programs/ssh.nix
-{ config, pkgs, ... }:
-
-{
- programs.ssh = {
- enable = true;
-
- extraConfig = ''
- AddKeysToAgent yes
- UseKeychain yes
- IdentitiesOnly yes
- HashKnownHosts yes
- '';
-
- # For better security
- serverAliveInterval = 60;
- serverAliveCountMax = 2;
-
- # Manage known hosts
- userKnownHostsFile = "~/.ssh/known_hosts";
-
- # Example host configurations
- matchBlocks = {
- "github.com" = {
- hostname = "github.com";
- user = "git";
- identityFile = "~/.ssh/github";
- extraOptions = {
- PreferredAuthentications = "publickey";
- };
- };
- "*" = {
- compression = true;
- serverAliveInterval = 60;
- };
- };
- };
-}
\ No newline at end of file
diff --git a/users/jeirmeister/programs/sublime.nix b/users/jeirmeister/programs/sublime.nix
deleted file mode 100644
index 3d066b0..0000000
--- a/users/jeirmeister/programs/sublime.nix
+++ /dev/null
@@ -1,8 +0,0 @@
-# users/jeirmeister/programs/sublime.nix
-{ config, pkgs, ... }:
-
-{
- home.packages = with pkgs; [
- sublime4
- ];
-}
diff --git a/users/jeirmeister/programs/tailscale.nix b/users/jeirmeister/programs/tailscale.nix
deleted file mode 100644
index 4e6da80..0000000
--- a/users/jeirmeister/programs/tailscale.nix
+++ /dev/null
@@ -1,8 +0,0 @@
-# users/jeirmeister/programs/tailscale.nix
-{ config, pkgs, ... }:
-
-{
- home.packages = with pkgs; [
- tailscale
- ];
-}
diff --git a/users/jeirmeister/programs/tmux.nix b/users/jeirmeister/programs/tmux.nix
deleted file mode 100644
index 94c1076..0000000
--- a/users/jeirmeister/programs/tmux.nix
+++ /dev/null
@@ -1,10 +0,0 @@
-# users/jeirmeister/programs/tmux.nix
-{ config, pkgs, ... }:
-
-{
- programs.tmux = {
- enable = true;
- clock24 = true;
- # Add your tmux configurations here
- };
-}
diff --git a/users/jeirmeister/programs/vr.nix b/users/jeirmeister/programs/vr.nix
deleted file mode 100644
index 544c993..0000000
--- a/users/jeirmeister/programs/vr.nix
+++ /dev/null
@@ -1,43 +0,0 @@
-# users/jeirmeister/programs/vr.nix
-{ config, pkgs, ... }:
-
-{
- home.packages = with pkgs; [
- immersed
- ];
-
- systemd.user.services.immersed = {
- Unit = {
- Description = "Immersed VR Client";
- After = [ "graphical-session.target" "network.target" ];
- PartOf = [ "graphical-session.target" ];
- Requires = [ "network.target" ];
- };
-
- Service = {
- Type = "simple";
- ExecStartPre = "${pkgs.coreutils}/bin/sleep 2"; # Give the video device time to initialize
- ExecStart = "${pkgs.immersed}/bin/immersed";
- Environment = [
- "DISPLAY=:0"
- "XDG_CURRENT_DESKTOP=KDE" # Since you're using Plasma
- "QT_QPA_PLATFORM=xcb" # Force X11 mode for better compatibility
- "XDG_RUNTIME_DIR=/run/user/1000"
- "XDG_SESSION_TYPE=x11" # Force X11 mode
- ];
- Restart = "on-failure";
- RestartSec = 5;
- StandardOutput = "journal";
- StandardError = "journal";
- DevicePolicy = "auto";
- };
-
- Install = {
- WantedBy = [ "graphical-session.target" ];
- };
- };
-
- # Create required directories
- home.file.".local/share/immersed/.keep".text = "";
- home.file.".config/immersed/.keep".text = "";
-}
\ No newline at end of file
diff --git a/users/jeirmeister/programs/vscode.nix b/users/jeirmeister/programs/vscode.nix
deleted file mode 100644
index 1be8a8c..0000000
--- a/users/jeirmeister/programs/vscode.nix
+++ /dev/null
@@ -1,57 +0,0 @@
-{ config, pkgs, ... }:
-{
- programs.vscode = {
- enable = true; # Make sure this is enabled
-
- extensions = with pkgs.vscode-extensions; [
- # Essentia
-
- ms-vsliveshare.vsliveshare
-
-
- # Languages
-# bbenoist.nix
- ms-python.python
- rust-lang.rust-analyzer
-
- # Tools
- # eamodio.gitlens
- ms-azuretools.vscode-docker
-
- # Theme & UI
- pkief.material-icon-theme
- dracula-theme.theme-dracula
- ];
-
- userSettings = {
- # Existing settings
- "editor.fontSize" = 14;
- "editor.fontFamily" = "FiraCode Nerd Font";
- "editor.formatOnSave" = true;
- "files.autoSave" = "onFocusChange";
- "workbench.colorTheme" = "Dracula";
- "editor.minimap.enabled" = false;
- "editor.rulers" = [ 80 120 ];
- "files.trimTrailingWhitespace" = true;
- "editor.bracketPairColorization.enabled" = true;
-
- # Git settings
- "git.enabled" = true;
- "git.autofetch" = true;
- "git.confirmSync" = false;
- "git.enableSmartCommit" = true;
- "git.path" = "${pkgs.git}/bin/git";
- "git.openRepositoryInParentFolders" = "never";
-
- # GitLens settings (since you have it installed)
- "gitlens.hovers.currentLine.over" = "line";
- "gitlens.currentLine.enabled" = true;
- "gitlens.hovers.enabled" = true;
- "gitlens.mode.active" = "zen";
-
- # Credential manager integration
- "git.terminalAuthentication" = true;
- "git.credential.helper" = "${pkgs.git-credential-manager}/bin/git-credential-manager";
- };
- };
-}
diff --git a/users/jeirmeister/programs/zsh.nix b/users/jeirmeister/programs/zsh.nix
deleted file mode 100644
index 7805174..0000000
--- a/users/jeirmeister/programs/zsh.nix
+++ /dev/null
@@ -1,28 +0,0 @@
-# users/jeirmeister/programs/zsh.nix
-{ config, pkgs, ... }:
-
-{
- programs.zsh = {
- enable = true;
- autosuggestion.enable = true;
- enableCompletion = true;
- syntaxHighlighting.enable = true;
-
- oh-my-zsh = {
- enable = true;
- theme = "robbyrussell";
- plugins = [ "git" "docker" "kubectl" ];
- };
-
- # Add this section to ensure home-manager paths are properly sourced
- initExtra = ''
- # Add home-manager applications to PATH
- export PATH=$HOME/.nix-profile/bin:$PATH
- '';
- };
-
- # Make zsh the default shell
- home.sessionVariables = {
- SHELL = "${pkgs.zsh}/bin/zsh";
- };
-}
\ No newline at end of file