.. raw:: pdf PageBreak standardPage Operating system ================ **Personal**: - Linux - NixOS - KDE Plasma | **Work**: - Windows 10 - WSL (Ubuntu) - Nix package manager .. raw:: pdf TextAnnotation "Started with Ubuntu for work, used Pop!_OS for personal laptops and now on NixOS." TextAnnotation "Used to use Apple/macOS and switched full-time to Linux a few years ago.used Homebrew for package management." TextAnnotation "Automated things with Ansible." TextAnnotation "" TextAnnotation "Use Windows for Office, Teams, etc. Development is done within the WSL/Linux environment." Nix and NixOS ============= - Declarative - Reproducable - Nix Packages collection (``nixpkgs``) has over 80,000 packages - Easy to add to and edit, and contribute to .. raw:: pdf TextAnnotation "Nix builds packages in isolation from each other. This ensures that they are reproducible and don't have undeclared dependencies, so if a package works on one machine, it will also work on another." TextAnnotation "Nix makes it trivial to share development and build environments for your projects, regardless of what programming languages and tools you’re using. " TextAnnotation "80,000 packages including Vim and tmux plugins, PHP and node packages" TextAnnotation "Configuration file-driven. You declare the end state rather than the steps to get there." TextAnnotation "Replaced Ansible for me." .. raw:: pdf PageBreak titlePage .. class:: centredtitle ``nix-env -iA php82`` .. raw:: pdf PageBreak .. class:: centredtitle ``nix-shell --packages php82`` .. raw:: pdf PageBreak .. class:: centredtitle ``nix-shell --packages php82 --command "php -v"`` .. raw:: pdf PageBreak standardPage configuration.nix ================= .. code-block:: nix :include: code/configuration.nix :linenos: hardware-configuration.nix ========================== .. code-block:: nix :include: code/hardware-configuration.nix :linenos: .. raw:: pdf PageBreak titlePage .. class:: centredtitle ``sudo nixos-rebuild build --flake .#nixedo`` .. raw:: pdf PageBreak standardPage dotfiles ======== * System configuration files * Usually hidden, filenames start with a dot (``.zshrc``, ``.gitconfig``, ``.config/``) * Maintained on GitHub since July 2015 * https://opdavi.es/dotfiles * Managed with Home Manager .. raw:: pdf TextAnnotation "Similar to hidden files within projects like .gitignore." TextAnnotation "Manages user configuration instead of system configuration." TextAnnotation "" TextAnnotation "Used with NixOS and the Nix package manager in WSL." home-manager/home.nix ===================== .. code-block:: nix :include: code/home-manager.nix :linenos: .. raw:: pdf PageBreak titlePage .. class:: centredtitle ``home-manager build -f home-manager/home.nix --flake .#wsl2`` .. raw:: pdf PageBreak standardPage