packtrak

module
v1.0.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 12, 2024 License: MIT

README

packtrak

GitHub release GitHub Stars Go Version License Go Report Card Build

Track Your Package Managers

You have all your dotfiles in sync between your systems and you know you can set up a new system instantly. You get a new computer, download your dotfiles and think you are ready to go. But now you remember - I need to install a lot of system packages to get my setup working... Now there is a solution to this problem! Packtrak tracks your package managers and keeps a manifest containing all the packages you want your system to have. The manifest is easily revisioned and can just like your dotfiles be shared across systems.

Install

Go

Use go install to compile locally.

go install github.com/lucas-ingemar/packtrak/cmd/packtrak@latest

Quick Usage Guide

Install a package:

packtrak [manager] install [package]

Remove a package:

packtrak [manager] remove [package]

Install a depencdency:

packtrak [manager] install --dependency [dependency]

Remove a dependency:

packtrak [manager] remove --dependency [dependency]

Synchronize manifest and system:

packtrak sync 

See the documentation for more information.

Autocompletion

Packtrak generates its own autocompletion for the commands. Simply put the following command in your .bashrc, .zshrc or the corresponding file for your setup:

source <(packtrak completion [shell])

Manifest File

The wanted package state for the managers is listed in ~/.config/packtrak/manifest.yaml. This file can be shared between computers to sync the state between them. When installing and removing packages this file will be updated.

An example of the file layout:

dnf:
  global:
    dependencies:
      - copr:copr.fedorainfracloud.org/phracek/PyCharm
    packages:
      - sway
      - kanshi
      - btop
  conditional:
    - type: group
      value: work
      dependencies: 
        - cm:https://rpm.releases.hashicorp.com/fedora/hashicorp.repo
      packages: 
        - terraform
    - type: group
      value: home
      dependencies: []
      packages:
        - htop
    - type: host
      value: spock
      dependencies: []
      packages: 
        - krita
git:
  global:
    dependencies: []
    packages:
      - https://github.com/zsh-users/zsh-autosuggestions.git
      - https://github.com/binpash/try.git
      - https://github.com/ahmetb/kubectx
  conditional: []
go:
  global:
    dependencies: []
    packages:
      - github.com/lucas-ingemar/packtrak/cmd/packtrak
      - github.com/mikefarah/yq/v4
      - github.com/lucas-ingemar/clergo/cmd/clergo
      - github.com/golangci/golangci-lint/cmd/golangci-lint
      - golang.org/x/tools/gopls
      - sigs.k8s.io/kind
      - github.com/rogpeppe/godef
  conditional: []
_version: v0.9.0

Global

Everything under global will be installed on all machines with this file. This should contain the all the packages that you want to share between all your systems. If a package or dependency is installed without any arguments they will be added under the global category.

Conditional

Under conditional different rules can be applied. These rules are used to only install packages or dependencies on systems that match the rules.

Group

The group is matched against what is defined in the config file under groups. If the group in the manifest matches one of the groups in the config file the rule is applied.

Host

The host matches the hostname of the system. If it is a match the rule is applied.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL