139 lines
2.9 KiB
ReStructuredText
139 lines
2.9 KiB
ReStructuredText
|
.. 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
|