4 ms·
I'm using a shell script together with the nix package manager for that. The shell script just ensures that all packages are there (e.g. doing `nix-env -i fpp w
by _query 10y ago
I'm using a shell script together with the nix package manager for that. The shell script just ensures that all packages are there (e.g. doing `nix-env -i fpp wget iterm2 jekyll ghc ruby nodejs composer php`). I can pin the version of all packages by configuring `NIX_PATH` to point to a specific `nixpkgs` (the package repository) commit. So that all people have exact the same versions of everything.
Package customizations like a .vimrc is also handled by nix (I recently blogged about how I do this: https://www.mpscholten.de/nixos/2016/05/26/sharing-configuration-across-systems-with-nix.html https://www.mpscholten.de/nixos/2016/05/26/sharing-configura...).
The shell scripts together with the package customizations (e.g. my custom vimrc) are managed by git.
- chriswarbo 10y agoI also use Nix, with sets of packages managed by git. I use four "levels": - System-wide packages, systemd services, users, cronjobs, etc. are managed by /etc/nixos/configuration.nix - My user profile has one package installed, which depends on all of the tools I want to be generally available (emacs, firefox, etc.). By using a single meta-package like this, I can manage it using git and it makes updates/rollbacks easier - Each project I work on maintains its own lists of dependencies (either directly in a .nix file, or converted automatically from other formats like .cabal), which are brought into scope by nix-shell - I also have a bunch of scripts which use nix-shell shebangs, so their dependencies are fetched when invoked, and available for garbage collection once they're finished
- akavel 10y agoI've recently learned you can put all the packages in one custom Nix expression in ~/.nixpkgs/config.nix, like below, then load (and reload/update/change) it with one `nix-env -i all`, or faster with: `nix-env -iA nixos.all`: # ~/.nixpkgs/config.nix { packageOverrides = defaultPkgs: with defaultPkgs; { # To install below "pseudo-package", run: # $ nix-env -i all # or: # $ nix-env -iA nixos.all all = with pkgs; buildEnv { name = "all"; paths = [ fpp wget iterm2 jekyll ghc ruby nodejs composer php ]; }; }; } and then keep only this one file in git. (Though still working on how to possibly also keep .inputrc, .bashrc, .profile, etc. in it.)
- deleted 10y ago[deleted]