Provided by: nix-bin_2.6.0+dfsg-3_amd64 bug

Name

       nix profile - manage Nix profiles

Synopsis

       nix profile [option…] subcommand

       where subcommand is one of the following:

       • nix  profile diff-closures (./nix3-profile-diff-closures.md) - show the closure difference between each
         version of a profile
       • nix profile history (./nix3-profile-history.md) - show all versions of a profile
       • nix profile install (./nix3-profile-install.md) - install a package into a profile
       • nix profile list (./nix3-profile-list.md) - list installed packages
       • nix profile remove (./nix3-profile-remove.md) - remove packages from a profile
       • nix profile rollback (./nix3-profile-rollback.md) - roll back to the previous version  or  a  specified
         version of a profile
       • nix profile upgrade (./nix3-profile-upgrade.md) - upgrade packages using their most recent flake
       • nix profile wipe-history (./nix3-profile-wipe-history.md) - delete non-current versions of a profile

Description

       nix  profile allows you to create and manage Nix profiles. A Nix profile is a set of packages that can be
       installed and upgraded independently from each other. Nix profiles are versioned,  allowing  them  to  be
       rolled back easily.

Default profile

       The default profile used by nix profile is $HOME/.nix-profile, which, if it does not exist, is created as
       a   symlink   to   /nix/var/nix/profiles/per-user/default  if  Nix  is  invoked  by  the  root  user,  or
       /nix/var/nix/profiles/per-user/username otherwise.

       You can specify another profile location using --profile path.

Filesystem layout

       Profiles are versioned as follows. When using profile path, path is a symlink to path-N, where N  is  the
       current version of the profile. In turn, path-N is a symlink to a path in the Nix store. For example:

       $ ls -l /nix/var/nix/profiles/per-user/alice/profile*
       lrwxrwxrwx 1 alice users 14 Nov 25 14:35 /nix/var/nix/profiles/per-user/alice/profile -> profile-7-link
       lrwxrwxrwx 1 alice users 51 Oct 28 16:18 /nix/var/nix/profiles/per-user/alice/profile-5-link -> /nix/store/q69xad13ghpf7ir87h0b2gd28lafjj1j-profile
       lrwxrwxrwx 1 alice users 51 Oct 29 13:20 /nix/var/nix/profiles/per-user/alice/profile-6-link -> /nix/store/6bvhpysd7vwz7k3b0pndn7ifi5xr32dg-profile
       lrwxrwxrwx 1 alice users 51 Nov 25 14:35 /nix/var/nix/profiles/per-user/alice/profile-7-link -> /nix/store/mp0x6xnsg0b8qhswy6riqvimai4gm677-profile

       Each of these symlinks is a root for the Nix garbage collector.

       The  contents of the store path corresponding to each version of the profile is a tree of symlinks to the
       files of the installed packages, e.g.

       $ ll -R /nix/var/nix/profiles/per-user/eelco/profile-7-link/
       /nix/var/nix/profiles/per-user/eelco/profile-7-link/:
       total 20
       dr-xr-xr-x 2 root root 4096 Jan  1  1970 bin
       -r--r--r-- 2 root root 1402 Jan  1  1970 manifest.json
       dr-xr-xr-x 4 root root 4096 Jan  1  1970 share

       /nix/var/nix/profiles/per-user/eelco/profile-7-link/bin:
       total 20
       lrwxrwxrwx 5 root root 79 Jan  1  1970 chromium -> /nix/store/ijm5k0zqisvkdwjkc77mb9qzb35xfi4m-chromium-86.0.4240.111/bin/chromium
       lrwxrwxrwx 7 root root 87 Jan  1  1970 spotify -> /nix/store/w9182874m1bl56smps3m5zjj36jhp3rn-spotify-1.1.26.501.gbe11e53b-15/bin/spotify
       lrwxrwxrwx 3 root root 79 Jan  1  1970 zoom-us -> /nix/store/wbhg2ga8f3h87s9h5k0slxk0m81m4cxl-zoom-us-5.3.469451.0927/bin/zoom-us

       /nix/var/nix/profiles/per-user/eelco/profile-7-link/share/applications:
       total 12
       lrwxrwxrwx 4 root root 120 Jan  1  1970 chromium-browser.desktop -> /nix/store/4cf803y4vzfm3gyk3vzhzb2327v0kl8a-chromium-unwrapped-86.0.4240.111/share/applications/chromium-browser.desktop
       lrwxrwxrwx 7 root root 110 Jan  1  1970 spotify.desktop -> /nix/store/w9182874m1bl56smps3m5zjj36jhp3rn-spotify-1.1.26.501.gbe11e53b-15/share/applications/spotify.desktop
       lrwxrwxrwx 3 root root 107 Jan  1  1970 us.zoom.Zoom.desktop -> /nix/store/wbhg2ga8f3h87s9h5k0slxk0m81m4cxl-zoom-us-5.3.469451.0927/share/applications/us.zoom.Zoom.desktop

       …

       The file manifest.json records the provenance of the packages that are installed in this version  of  the
       profile. It looks like this:

       {
         "version": 1,
         "elements": [
           {
             "active": true,
             "attrPath": "legacyPackages.x86_64-linux.zoom-us",
             "originalUri": "flake:nixpkgs",
             "storePaths": [
               "/nix/store/wbhg2ga8f3h87s9h5k0slxk0m81m4cxl-zoom-us-5.3.469451.0927"
             ],
             "uri": "github:NixOS/nixpkgs/13d0c311e3ae923a00f734b43fd1d35b47d8943a"
           },
           …
         ]
       }

       Each object in the array elements denotes an installed package and has the following fields:

       • originalUri:  The  flake  reference (./nix3-flake.md) specified by the user at the time of installation
         (e.g. nixpkgs). This is also the flake reference that will be used by nix profile upgrade.

       • uri: The immutable flake reference to which originalUri resolved.

       • attrPath: The flake output attribute that provided this package. Note that this is not necessarily  the
         attribute  that the user specified, but the one resulting from applying the default attribute paths and
         prefixes; for instance, hello might resolve to packages.x86_64-linux.hello  and  the  empty  string  to
         defaultPackage.x86_64-linux.

       • storePath: The paths in the Nix store containing the package.

       • active:  Whether  the  profile  contains  symlinks  to  the files of this package. If set to false, the
         package is kept in the Nix store, but is not “visible” in the profile’s symlink tree.

                                                                                                 nix3-profile(1)