~ruther/nix-tmpactivator

ref: 26244cda67cbcd5ca03c786a64823274f653fe58 nix-tmpactivator/README.md -rw-r--r-- 1.9 KiB
26244cda — Rutherther feat: allow strings in home.packages 1 year, 2 months ago

#Nix tmpactivator

This is mostly for learning purposes. This is a lightweight home directory activator with home-manager like interface to home file linking.

#How this works

Internally a tmpfiles.d file is made. This file is then activated using systemd-tmpfiles command. Maybe it would be better to just symlink manually at this point...

config.tmpfiles.activationPackage is the package you want to use for activation. The binary file to activate is bin/activate. To remove the files use bin/deactivate. CAUTION: the deactivation will remove even files that were not created by the tool. Activation will override files that already exist and were not created by this tool! Make sure that you are not going to override anything.

#Options

For home files, use home.file. The interface is the same as for NixOS environment.etc. home.user and home.group should be configured. home.homeDirectory is exposed as well and is set to /home/${config.home.user} by default.

#Example flake

{
  inputs.nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable";
  inputs.tmpactivator.url = "github:Rutherther/nix-tmpactivator";
  inputs.tmpactivator.inputs.nixpkgs.follows = "nixpkgs";

  outputs = { self, nixpkgs, tmpactivator }: let
    system = "x86_64-linux";
    pkgs = nixpkgs.legacyPackages.${system};
    environment = tmpactivator.lib.mkTmpActivator {
      inherit pkgs;
      modules = [
        {
          home = {
            user = "ruther";
            group = "users";

            file."testing".text = "Hello world!";
          };

          systemd.services.test = {
            script = ''
              echo "Hello world!"
            '';
          };
        }
      ];
    };
  in {
    packages.${system} = {
      default = self.packages.${system}.activationPackage;
      activationPackage = environment.config.tmpfiles.activationPackage;
    };
  };
}
Do not follow this link