[Nix-dev] Nix User Profile (NixUP)

Nicolas Pierron nicolas.b.pierron at gmail.com
Wed Nov 25 21:26:21 CET 2015


Nice work, I will see if I can replace some of my Makefiles by NixUP
as soon as I finish the security update branch work.

On Wed, Nov 25, 2015 at 8:07 PM, Arseniy Seroka <ars.seroka at gmail.com> wrote:
> Hello! Where I can take a look at some examples of nixup configurations?

https://github.com/ts468/nixpkgs/blob/upstream.nixuser/profile.nix

> 2015-11-25 16:00 GMT+03:00 Matthias Beyer <mail at beyermatthias.de>:
>>
>> From what I read in your mail, this looks promising. I hope it is not
>> just advertising.
>>
>> Will test asap I can come up with some time. Beeing a student does not
>> mean you have time for all the things... :-(
>>
>> On 25-11-2015 13:08:41, Thomas Strobel wrote:
>> > Hi!
>> >
>> > I'm very happy to say that a new version of NixUP is available for
>> > testing. You can find the latest version at [1]. Please read
>> > NIXUP_README.md for help on how to test NixUP.
>> >
>> >
>> > What is Nix User Profile (NixUP)? NixUP is a declarative configuration
>> > for the user environment. It is an equivalent to the NixOS configuration
>> > method that is based around 'nixos-rebuild' and
>> > '/etc/nixos/configuration.nix'. NixUP provides a module system for
>> > configuring the user environment and is intended as a replacement for
>> > the imperative 'nix-env' commands. NixUP allows to, e.g., install
>> > packages, manage user defined services and to manage resources.
>> >
>> >
>> > NixUP consists of a new program, called 'nixup' and a declarative
>> > configuration rooted at '$XDG_CONFIG_HOME/nixup/profile.nix' (e.g.
>> > ~/.config/nixup/profile.nix). Basically, the workflow for managing the
>> > NixUP user profile is the same as how the NixOS system configuration is
>> > being managed. The 'profile.nix' is edited by the user, and then turned
>> > into an active environment through 'nixup'.
>> >
>> > The important commands for using 'nixup' are:
>> >
>> > nixup build
>> >    -- Builds a user profile. By default the profile is defined
>> >       in $XDG_CONFIG_HOME/nixup/profile.nix.
>> >
>> > nixup login
>> >    -- Builds a user profile that will be activated on the next login.
>> >       That is similar to nixos-rebuild boot.
>> >
>> > nixup switch
>> >    -- Builds a user profile and immediately switches to it.
>> >
>> > nixup edit
>> >    -- Opens an editor with the current configuration.
>> >
>> >
>> > NixUP also brings an small program that helps to install and to remove
>> > software packages. If 'config.imperativeNix.enable=true' is set in the
>> > 'profile.nix' configuration, then a program 'nix-package' becomes
>> > available that manages a list of packages to be installed into the user
>> > environment. By default the list is maintained at
>> > '$XDG_CONFIG_HOME/nixup/packages.nix', from where the list is read by a
>> > module of the NixUP system.
>> >
>> > The commands for using 'nix-package' are:
>> >
>> > nix-package install hello
>> >
>> > nix-package remove hello
>> >
>> > Note that the packages are not pinned at a particular version but are
>> > linked to the currently active nixpkgs channel. A way to pin a package
>> > will be provided later.
>> >
>> >
>> > Besides managing software packages, NixUP also provides a way to manage
>> > user controlled services. NixUP allows to define services for 'systemd
>> > --user', similarly to how NixOS allows to define services for 'systemd'.
>> > That means that the feature of managing services within NixUP is bound
>> > very tightly to 'systemd', and will not be available on other platforms
>> > like OSX or Windows.
>> >
>> >
>> > The last interesting feature of NixUP is that is allows to manage
>> > resources. That means, it allows to define files in 'profile.nix' that
>> > are then linked into the $HOME directory of a user, or into any
>> > sub-directory of $HOME. The necessary sub-directories and links are
>> > created as needed, and automatically removed when the 'profile.nix'
>> > changes. Automatically created sub-directories are removed if they are
>> > empty after all links have been removed. So NixUP has a built-in way for
>> > managing, e.g., dot-files.
>> >
>> >
>> > The plan is now to test NixUP and hopefully merge NixUP into NixOS. The
>> > next step then will then be to extend NixOS and NixUP so that the same
>> > configuration can be written into the NixOS user declaration of
>> > 'configuration.nix' and into the user's NixUP 'profile.nix'. After that,
>> > we could generalize the NixOS modules of those services that could also
>> > run as user services and make them available for both NixOS and NixUP.
>> > In the long run, NixUP should be developed into an extensive collection
>> > of user modules that allow to declaratively configure and manage user
>> > applications and user services.
>> >
>> >
>> > Please let me know what you think, and please try to test NixUP! :)
>> >
>> >
>> > Best regards,
>> > Thomas
>> >
>> >
>> > [1] https://github.com/NixOS/nixpkgs/pull/9250
>> > _______________________________________________
>> > nix-dev mailing list
>> > nix-dev at lists.science.uu.nl
>> > http://lists.science.uu.nl/mailman/listinfo/nix-dev
>>
>> --
>> Mit freundlichen Grüßen,
>> Kind regards,
>> Matthias Beyer
>>
>> Proudly sent with mutt.
>> Happily signed with gnupg.
>>
>> _______________________________________________
>> nix-dev mailing list
>> nix-dev at lists.science.uu.nl
>> http://lists.science.uu.nl/mailman/listinfo/nix-dev
>>
>
>
>
> --
> Sincerely,
> Arseniy Seroka
>
> _______________________________________________
> nix-dev mailing list
> nix-dev at lists.science.uu.nl
> http://lists.science.uu.nl/mailman/listinfo/nix-dev
>



-- 
Nicolas Pierron
http://www.linkedin.com/in/nicolasbpierron - http://nbp.name/


More information about the nix-dev mailing list