Nixos-shell: Difference between revisions

Onny (talk | contribs)
Onny (talk | contribs)
 
(One intermediate revision by the same user not shown)
Line 31: Line 31:


After the VM is successfully booted, DokuWiki will be available on http://localhost:8080
After the VM is successfully booted, DokuWiki will be available on http://localhost:8080
=== Reference local nixpkgs folder ===
Using the <code>-I nixpkgs</code> parameter, you could choose to use a local ''nixpkgs'' repository, for example to test unfinished packages or modules:<syntaxhighlight lang="bash">
nixos-shell -I nixpkgs=/home/myuser/projects/nixpkgs myvm.nix
</syntaxhighlight>
=== Graphical session ===
Following snippet will spawn a QEMU session with a graphical screen running GNOME, configured to auto login the user <code>nixos</code>.{{file|myvm.nix|nix|<nowiki>
{ ... }: {
  virtualisation.memorySize = 8096;
  virtualisation.cores = 8;
  virtualisation.graphics = true;
  services.displayManager.gdm.enable = true;
  services.desktopManager.gnome.enable = true;
  services.displayManager.autoLogin = {
    enable = true;
    user = "nixos";
  };
  users.users.nixos = {
    isNormalUser = true;
    initialPassword = "nixos";
  };
};
</nowiki>|name=|lang=}}


=== Mounting host directories ===
=== Mounting host directories ===
Line 37: Line 65:


{{file|myvm.nix|nix|<nowiki>
{{file|myvm.nix|nix|<nowiki>
{ pkgs, ... }: {
{ ... }: {
   nixos-shell.mounts.extraMounts = {
   nixos-shell.mounts.extraMounts = {
     "/var/lib/nextcloud/store-apps/calendar" = {
     "/var/lib/nextcloud/store-apps/calendar" = {
Line 45: Line 73:
   };
   };
};
};
</nowiki>}}
</nowiki>|name=|lang=}}


Mounting is done through the network filesystem protocol 9p. Currently [https://github.com/Mic92/nixos-shell/issues/71 it's not possible] to mount the target directory with a specific UID/GID, so you'll have to change the permissions on the host directory according to your needs.
Mounting is done through the network filesystem protocol 9p. Currently [https://github.com/Mic92/nixos-shell/issues/71 it's not possible] to mount the target directory with a specific UID/GID, so you'll have to change the permissions on the host directory according to your needs.