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
|