This repository contains configuration files and setup scripts for Ubuntu 24 LTS. It uses GNU Stow for managing dotfiles and provides a streamlined way to set up a development environment.
This project aims to provide a consistent and reproducible setup for Ubuntu 24 LTS systems, focusing on development tools and system configurations. The setup is managed through GNU Stow, which creates symbolic links to the appropriate locations in the home directory.
Before running the dotfiles installation, you need to complete these manual steps:
-
Create a new user:
sudo adduser [username]
-
Give the user admin rights:
sudo usermod -aG sudo [username]
-
Switch to the new user:
su - [username]
For Framework Laptop 13 (AMD Ryzen™ AI 300 Series), update the firmware using Linux/LVFS:
-
Ensure charger is attached:
- Connect your Framework Laptop to the charger before starting the update process
- Do not disconnect the charger during the update
-
Update firmware using fwupdmgr:
# Refresh the firmware database fwupdmgr refresh --force # Check for available updates fwupdmgr get-updates # Install all available firmware updates fwupdmgr update
-
Important Notes:
- Ensure your laptop is connected to power during firmware updates
- Do not interrupt the update process
- The system may restart multiple times during the update
- Keep the laptop plugged in throughout the entire process
- Do not close the lid during the update process
After completing the manual steps above:
-
Update the system:
sudo apt update && sudo apt upgrade -y -
Install essential tools:
sudo apt install -y git stow curl wget
-
Clone this repository:
git clone <repository-url> cd dotfiles
- Ubuntu 24 LTS
- GNU Stow
- Basic development tools
- Framework Laptop firmware updated (if applicable)
Each directory in this repository represents a specific tool or configuration set. The structure is organized as follows:
.
├── README.md # This file
├── CHANGELOG.md # Project evolution and changes
├── install.sh # Main installation script
├── test-all.sh # Test script for all configurations
├── test-docker.sh # Script to test in Docker environment
├── Dockerfile # Docker configuration for testing
├── docker-compose.yml # Docker Compose configuration
├── entrypoint.sh # Docker entrypoint script
├── backup/ # Directory for storing configuration backups
│ └── .gitignore # Ensures backup files are not tracked by git
└── [tool_name]/ # Individual tool configurations
└── [config_files] # Tool-specific configuration files
To install configurations interactively:
./install.shThe installation process includes:
- Checking and installing required dependencies
- Managing existing
.configdirectory:- If
.configexists, you'll be prompted to:- Create a backup (recommended) - backups are stored in the
backupdirectory - Overwrite existing configuration
- Exit installation
- Create a backup (recommended) - backups are stored in the
- If
.configdoesn't exist, it will be created
- If
- Installing selected configurations with proper backups
To update all apt and snap packages:
./install.sh --updateThis will:
- Update all APT package lists
- Upgrade all installed APT packages
- Perform a full system upgrade
- Clean up unused packages
- Refresh all snap packages
To install all configurations automatically in a specific order:
./install.sh --allThis will install all modules in the following predefined order:
- apt-packages - System packages and WireGuard VPN
- certs - SSL/TLS certificates
- zsh - Enhanced shell configuration
- neofetch - System information display
- snap-config - Snap package management
- vim - Neovim text editor
- kitty - Terminal emulator
- kubectl - Kubernetes CLI tools
- github-cli - GitHub command-line interface
- slack - Slack desktop application
- docker - Docker configuration
- nvm - Node Version Manager
- gitlab-cli - GitLab command-line interface
To install specific tool configurations:
stow [tool_name]Note: Each module's installation script will:
- Check for existing configuration
- Create a backup if needed
- Install any missing dependencies
- Apply the configuration using stow
To test all configurations locally:
./test-all.shTo test the configuration in a Docker environment:
./test-docker.shThis will:
- Build and start a Docker container
- Run the installation script
- Run all tests
- Provide an interactive ZSH shell for manual testing
This project includes the following configuration modules:
- Kubectl - Kubernetes command-line tool configuration
- ZSH - Enhanced shell with plugins and themes
- Kitty - Modern terminal emulator configuration
- Certificates - SSL/TLS certificate management
- Neofetch - System information display
- Snap - Snap package configuration and management
- APT Packages - System package management with WireGuard VPN
- Slack - Slack desktop application
- Docker - Docker Engine and Docker Compose installation
- NVM - Node Version Manager for Node.js
- GitLab CLI - GitLab command-line interface
- GitHub CLI - GitHub command-line interface
- Vim/Neovim - Text editor configuration
The kubectl configuration provides a powerful and user-friendly Kubernetes command-line experience with the following features:
- kubectl installation and configuration
- kubelogin for OIDC authentication
- Automatic backup of existing configurations
- Support for multiple clusters and contexts
- kubectl: Kubernetes command-line tool
- kubelogin: OIDC authentication plugin
- Configuration Management:
- Multiple cluster support
- Context switching
- Namespace management
- OIDC authentication setup
-
Cluster Management:
- Easy context switching
- Namespace management
- Cluster information access
- Resource management
-
Authentication:
- OIDC integration
- Automatic token refresh
- Secure credential management
-
Useful Aliases:
- Short commands for common operations
- Context switching shortcuts
- Namespace management commands
To install the kubectl configuration:
cd kubectl
./install.shAfter installation:
- Verify the installation with
./test.sh - Configure your OIDC credentials if needed
- Test cluster access with
kubectl cluster-info
The ZSH configuration provides a powerful and user-friendly shell environment with the following features:
- Oh My Zsh with Catppuccin Mocha theme
- Hack Nerd Font for better icon support
- Enhanced history management
- Smart directory navigation
- Advanced tab completion
- FZF integration with preview support
- zsh-autosuggestions: Suggests commands as you type based on history
- zsh-syntax-highlighting: Highlights commands as you type
- zsh-z: Smarter directory jumping (like
cdbut remembers your most used directories) - zsh-history-substring-search: Better history search with up/down arrows
- zsh-dirhistory: Directory history navigation
- fzf: Fuzzy finder for files, history, and more with preview support
-
Directory Navigation:
- Use
zinstead ofcdfor smarter directory jumping - Use
dandfto navigate directory history - Use Ctrl+Left/Right to move word by word
- Enhanced directory history management
- Use
-
Fuzzy Finding:
Ctrl+T: Fuzzy find files with previewCtrl+R: Fuzzy find in historyAlt+C: Fuzzy find directories- Preview support for files and directories
-
History Search:
- Use up/down arrows to search through history
- Matches are highlighted as you type
- Enhanced history management with deduplication
- Extended history with timestamps
-
Useful Aliases:
- Common system commands (
ll,la,l, etc.) - Git shortcuts (
gs,ga,gc, etc.) - Directory navigation (
..,...) - FZF aliases with preview support
- System information commands
- Common system commands (
-
Completion System:
- Enhanced tab completion
- Menu selection for completions
- Case-insensitive matching
- Colored output for better visibility
- Grouped completions
-
Development Tools:
- SDKMAN integration for Java development
- Git integration with useful aliases
- Editor configuration
- Path management
To install the ZSH configuration:
cd zsh
./install.shAfter installation:
- Set your terminal emulator to use "Hack Nerd Font"
- Restart your terminal or run
source ~/.zshrc
The Kitty terminal configuration provides a modern and feature-rich terminal experience with:
- Catppuccin Integration:
- Beautiful and consistent color scheme
- Optimized for readability
- Support for both light and dark modes
- Custom Key Bindings:
- Efficient window and tab management
- Smart copy/paste operations
- Quick navigation shortcuts
-
Window Management:
- Multiple windows and tabs
- Split window layouts
- Window resizing and moving
-
Performance:
- GPU-accelerated rendering
- Efficient memory usage
- Fast startup time
-
Additional Features:
- Scrollback buffer with search
- Clipboard integration
- URL detection and handling
- Image display support
- Unicode and emoji support
To install the Kitty configuration:
cd kitty
./install.shAfter installation:
- Set Kitty as your default terminal emulator
- Configure your system to use Hack Nerd Font
- Restart Kitty to apply all changes
The certificate configuration provides secure management of system and user certificates with the following features:
- Root CA certificate installation
- Certificate directory setup
- Automatic certificate updates
- Certificate verification
- System trust store integration
- Certificate Management:
- Root CA certificate installation
- Certificate directory structure
- Certificate verification setup
- Trust store configuration
-
Certificate Installation:
- Automatic installation in system trust store
- Proper permission management
- Secure certificate storage
- Backup of existing certificates
-
System Integration:
- Integration with system trust store
- Automatic certificate updates
- Proper file permissions
- Secure storage location
To install the certificate configuration:
cd certs
./install.shAfter installation:
- Verify the installation with
./test.sh - Check that the certificate is properly installed in the system trust store
- Verify that the certificate is valid and trusted
The Neofetch configuration provides a beautiful system information display with the following features:
- Neofetch installation and configuration
- Acenoster theme integration with custom icons
- Hack Nerd Font support for enhanced visualization
- System information display with ASCII art logo
- Custom system specs display with improved layout
- Neofetch: System information display tool
- Acenoster Theme: Beautiful and informative display theme
- Hack Nerd Font: Icon support for better visualization
- Custom Layout: Enhanced system information organization
-
System Information Display:
- ASCII art logo of your distribution
- Detailed system specifications with custom icons
- Uptime information
- Battery status (for laptops)
- Memory and disk usage
- CPU and GPU information
- Package management information
- Desktop environment details
-
Theme Integration:
- Beautiful Acenoster theme
- Proper icon support with Nerd Fonts
- Clean and organized layout
- Consistent color scheme
- Custom information grouping
To install the Neofetch configuration:
cd neofetch
./install.shAfter installation:
- Verify the installation with
./test.sh - Open a new terminal to see the system information display
- Make sure your terminal is using Hack Nerd Font for proper icon display
The Snap configuration provides a streamlined package management solution with the following features:
- Automatic snapd installation and configuration
- Installation of essential applications
- Installation of productivity tools
- Installation of development tools
- Installation of system utilities
- GLPI agent configuration
- Brave browser profile setup
-
Communication Tools:
- Signal
- Zoom
- Microsoft Teams
-
Productivity:
- OnlyOffice Desktop Editors
- ImageMagick
- XMind (Mind Mapping Tool)
-
Development Tools:
- Freelens (Kubernetes IDE)
- IntelliJ IDEA Ultimate
- DataGrip
- Bruno (API Testing Tool)
- Postman (API Development Platform)
-
Entertainment:
- Spotify
-
System Utilities:
- htop
-
IT Management:
- GLPI
-
Package Management:
- Automatic installation of snapd
- Bulk package installation
- Classic confinement support for development tools
- Update management
-
System Integration:
- GLPI agent configuration with server URL
- Brave browser profile management
- Automatic updates
- Security updates
To install the Snap configuration:
cd snap-config
sudo ./install.shAfter installation:
- Verify installed packages with
snap list - Check GLPI agent configuration
- Configure Brave profiles as needed
- Set up development tools
Note: This module requires root privileges to run and is not supported in Docker environments.
The APT packages configuration provides essential system packages and network tools with the following features:
- WireGuard VPN installation and configuration
- Network utilities (net-tools) installation
- ITSF-specific WireGuard server configuration
- Interactive IP address assignment
- NetworkManager integration
-
WireGuard VPN:
- Modern VPN protocol for secure connections
- ITSF server configuration (vpn-user.itsf.io:5544)
- Interactive IP address assignment (192.168.66.X/32)
- NetworkManager integration for easy management
-
Network Tools:
- netstat for network connections
- ifconfig for interface configuration
- route for routing table management
- arp for ARP table management
-
VPN Configuration:
- Automatic key generation and storage
- ITSF server pre-configuration
- Interactive IP assignment
- NetworkManager integration
-
Network Management:
- Essential network utilities
- System administration tools
- Network troubleshooting capabilities
To install the APT packages configuration:
cd apt-packages
sudo ./install.shAfter installation:
- Configure your WireGuard IP address when prompted
- Connect to VPN using NetworkManager or
nmcli connection up itsf - Test network tools with
netstat -tuln,ifconfig, etc.
Note: This module requires root privileges to run.
The Docker configuration provides complete Docker Engine installation and setup with the following features:
- Docker Engine installation from official Docker repository
- Docker CLI, containerd, and Docker Compose installation
- Automatic repository setup with GPG key verification
- Docker daemon management and auto-start configuration
- Comprehensive installation verification
- Docker Engine: Container runtime and management
- Docker CLI: Command-line interface
- containerd: Container runtime
- Docker Compose: Multi-container application management
- Docker Buildx: Extended build capabilities
-
Installation Process:
- Official Docker repository setup
- GPG key verification
- Automatic dependency resolution
- Service configuration
-
System Integration:
- Docker daemon auto-start
- User group configuration
- Service management
- Network configuration
To install Docker:
cd docker
sudo ./install.shAfter installation:
- Add your user to the docker group:
sudo usermod -aG docker $USER - Log out and log back in
- Verify with
docker run hello-world
Note: This module requires root privileges to run.
The NVM configuration provides Node Version Manager installation and Node.js setup with the following features:
- NVM installation from official repository
- Automatic shell configuration (zsh/bash)
- Node.js LTS version installation
- Automatic default version setup
- JFrog Artifactory npm registry configuration
- NVM: Node Version Manager (v0.40.3)
- Node.js: Latest LTS version
- npm: Node Package Manager
- .npmrc: npm configuration for JFrog Artifactory
-
Version Management:
- Multiple Node.js version support
- Easy version switching
- Default version configuration
- LTS version installation
-
Configuration:
- Automatic shell integration
- JFrog Artifactory registry setup
- XDG_CONFIG_HOME support
- Environment variable management
To install NVM and Node.js:
cd nvm
./install.shAfter installation:
- Reload your shell:
source ~/.zshrcorsource ~/.bashrc - Verify with
nvm --versionandnode --version - Check npm registry with
npm config get registry
The Slack configuration provides direct installation of the Slack desktop application with the following features:
- Direct .deb package download and installation
- Automatic dependency resolution
- Desktop integration
- Version verification and testing
- Slack Desktop Application:
- Latest version (4.36.130) installation
- Desktop file creation for application menu
- System integration
- Automatic updates support
-
Installation Process:
- Direct .deb package download
- Automatic dependency resolution
- Desktop integration
- Version verification
-
System Integration:
- Application menu integration
- Desktop file creation
- Proper permissions setup
- Update management
To install the Slack configuration:
cd slack
sudo ./install.shAfter installation:
- Launch Slack with
slackcommand - Sign in to your workspace
- Configure notifications and preferences
Note: This module requires root privileges to run.
The GitLab CLI configuration provides command-line access to GitLab with the following features:
- GitLab CLI (glab) installation
- SteelHome GitLab instance pre-configuration
- Authentication setup guidance
- Command-line GitLab integration
- GitLab CLI (glab):
- Command-line GitLab access
- Issue and merge request management
- CI/CD pipeline management
- Repository operations
-
Pre-configured Instance:
- SteelHome GitLab instance (https://gitlab.steelhome.internal/)
- Ready-to-use configuration
- Authentication guidance
-
GitLab Operations:
- Issue management
- Merge request operations
- Pipeline monitoring
- Repository management
To install the GitLab CLI configuration:
cd gitlab-cli
./install.shAfter installation:
- Run
glab auth loginto authenticate - Test with
glab issue listorglab mr list - Configure additional settings as needed
The GitHub CLI configuration provides command-line access to GitHub with the following features:
- GitHub CLI (gh) installation and configuration
- General configuration setup
- Authentication guidance
- Command-line GitHub integration
- GitHub CLI (gh):
- Command-line GitHub access
- Repository management
- Issue and pull request operations
- GitHub Actions integration
-
Configuration Management:
- General GitHub CLI settings
- User-specific configuration
- Authentication setup
-
GitHub Operations:
- Repository cloning and management
- Issue and PR operations
- GitHub Actions workflow management
- Code review tools
To install the GitHub CLI configuration:
cd github-cli
./install.shAfter installation:
- Run
gh auth loginto authenticate - Create your own
hosts.ymlfile for personal settings - Test with
gh repo listorgh issue list
The Vim/Neovim configuration provides a modern and feature-rich editing experience with the following features:
- Modern Neovim configuration using Lua
- Plugin management with lazy.nvim
- Beautiful Catppuccin theme integration
- Smart code completion
- Snippet support
- File navigation and fuzzy finding
- Git integration
- Status line and tab visualization
-
Plugin Management:
- lazy.nvim for efficient plugin loading
- Automatic plugin installation
- Dependency management
- Version control
-
Completion System:
- Smart code completion
- Snippet support with luasnip
- Buffer and path completion
- Beautiful completion menu with icons
-
File Management:
- nvim-tree for file browsing
- Telescope for fuzzy finding
- Buffer management with bufferline
- Tab visualization
-
Editor Experience:
- Modern Lua configuration
- Beautiful Catppuccin theme
- Smart indentation
- Line numbers and relative numbers
- Mouse support
- Clipboard integration
-
Navigation:
- File explorer with nvim-tree
- Fuzzy finding with Telescope
- Buffer navigation
- Tab management
- Smart completion
-
Visual Enhancements:
- Status line with lualine
- Tab visualization with bufferline
- Syntax highlighting with treesitter
- Git integration with gitsigns
To install the Vim/Neovim configuration:
cd vim
./install.shAfter installation:
- Open Neovim with
nvim - Wait for plugins to install
- Restart Neovim to apply all changes
Note: This configuration requires Neovim 0.9.5 or higher.
Feel free to submit issues and enhancement requests.
This project is licensed under the MIT License - see the LICENSE file for details.