linuxmint-una

You never forget your first love

To tell the truth it’s not quite true that linuxmint was my first love, initially I loved Knoppix and its KDE3 interface more and it didn’t make me feel lonely in the unknown country.

But with the switch to KDE4 for a long time I found in cinnamon the favorite desktop and learned the name of Clement Lefebvre and his famous Linux Mint distribution.

So I have always considered Linux Mint even if derived from Ubuntu as a primary distribution and on the occasion of the release of version Una 20.3 I immediately made it compatible with eggs.

Linux Mint Uma remastered with eggs

linuxmint Una

manjaro linux on board

E quindi uscimmo a riveder le stelle

Il precedente post era del 24 novembre 2021, mi ero appena immerso nella riscrittura di eggs al fine di includere altre famiglie di Linux oltre a quelle di discendenza Debian, Devuan ed Ubuntu.

Giusto dopo un mese di lavoro, ho cominciato a vedere i primi risultati e sono stato contattato da Stefano Capitali di manjaro che, interessato ad eggs mi proponeva un suo aiuto.

Grazie all’esperienza di Stefano che mi ha dato le principali indicazioni, l’abbrivio ed è inoltre l’autore del pacchetto, giusto per l’epifania, la Befana ci ha portato il regalo della prima versione di eggs funzionante su Manjaro Linux.

manjaro-kde

Potete trovare altre informazioni sul forum di manjaro

a bit more universal...

eggs in questo momento ha raggiunto praticamente la totalità delle distribuzioni basate su Debian e da queste derivate: Devuan, Ubuntu e le innumerevoli altre.

Un buon successo, per un software di sistema ed in particolare della rimasterizzazione del sistema stesso al fine di ottenere da un sistema installato una sua immagine installabile ed avviabile. Tuttavia da quando è stato pensato, la sua indole è stata sempre quella di essere per così dire “universale” ed allora come fare per includere le altre famiglie di Linux?

Vi sono almeno altre due famiglie Linux ampiamente diffuse: sono quelle di derivazione Fedora/Redhat e quelle di derivazione Arch. Ce ne sono anche altre, nondimento importati storicamente o che lo potrebbero diventare in seguito: penso a slackware, gnuix ed nixos in questo momento, ma sicuramente c’è e ci sarà, ancora dell’altro.

Bisognerebbe trovare qualcosa di comune a tutte esse, innanzitutto per distribuire il programma.

AppImage e flatpack potrebbero essere interessanti per questo. Se eggs fosse rilasciato come appImage, potremmo prescindere da apt e portarci direttamente su appImage alcuni degli strumenti di cui abbiamo bisogno:

  • dosfstools
  • parted
  • rsync
  • squash-tools
  • xorriso

In aggiunta, credo che i seguenti pacchetti siano universalmente installti:

  • coreutils (normalmente presenti)
  • cryptsetup (normalmente presenti)

Abbiamo quindi, per la famiglia Debian le seguenti necessità:

  • isolinux // indispensabile per boot
  • syslinux-common
  • live-boot
  • live-boot-initramfs-tools

Occorre capire come nella famiglia redhat ed arch tutto ciò potrebbe realizzarsi e dovrebbe essere piuttosto fattibile visto che sia redhat che arch hanno strumenti validi di rimasterizzazione.

Arch linux #

Dalla pagina di archiso

The following packages need to be installed to be able to create an image with the included scripts:

  • arch-install-scripts
  • awk
  • dosfstools
  • e2fsprogs
  • erofs-utils (optional)
  • findutils
  • gzip
  • libarchive
  • libisoburn
  • mtools
  • openssl
  • pacman
  • sed
  • squashfs-tools

Il problema di Arch linux è che è si un sistema pulito e documentato, ma è … palloso!!!

Mandato alla malora Arch linux, ho scelto la prima distribuzione basata su Arch linux presente in distrowatch: EndeavourOS e non ho potuto che stupirmi.

Ho sempre utilizzato calamares per installare sistemi live e pensavo che fosse questo il modo, in EndeavourOS viene utilizzato in maniera diversa e permette - a partire dallo stesso disco di installazione, di installare l’interfaccia grafica che più ci aggrada.

Non dovendo andare troppo per il sottile, necessitando giusto di qualcosa di maneggiabile ho scelta xfce4 e dopo un breve minutaggio necessario a scaricare ed installare i vari pacchetti il sistema si è installato.

Da notare anche nella loro configurazione di calamares la presenza di un tasto per la visualizzazione della finestra di debug, utilissima a noi sviluppatori.

EndeavourOS

niente da dire… mi sto innamorando! #

Pulito, bella grafica, snello. Me lo immagino installato su computer leggeri e datati…

EndeavourOS

Oggi ho provato a far girare eggs su Arch… risultati? Soddisfacenti, ma c’è lavoro da fare e, non voglio inguaiare la parte stable di eggs.

Sulla macchina di test, sono riuscito a far funzionare eggs dad -d ed iniziare la produzione. Ho però problemi con la comprensione di pacman, ad esempio sudo pacman -S calamares dovrebbe installare, appunto calamares, ma semplicemente non lo trova.

Una buona idea che replicherò sulla versione di eggs in linea, almeno sulla 14.18 che dovrà evolvere per abbracciare archlinux è quella di introdurre per ogni distribuzione il concetto di familyId, con tre possibilità: debian, fedora, arch.

Questo mi consente una migliore gestione dei processi di installazione, rimozione, controllo del pacchetto.

Un altro grosso problema è la non uniformità dei nomi dei pacchetti, così la famiglia debian ha dei nomi, la famiglia fedora degli altri ed anche la famiglia arch.

Dovrei, a priori tenere traccia di tutto quello che occorre - poche cose in verità - e organizzare una tabella a tre per ogni famiglia.

Per oggi basta così, s’è fatta ‘na certa…

Appunti sparsi #

pacchetti Debian utilizzati attualmente #

Abbiamo dei pacchetti comuni, alcuni già di norma installati, alcuni necessari semplicemente per la pacchettizzazione, altri necessari per comprimere e generare la immagine iso, boot etc. Li ho denominati common. Altri pacchetti invece, variano a seconda della architettura i386, amd64, armel o arm64. Altri pacchetti ancora variano a seconda della versione della distribuzione in uso. I pacchetti più “particolari” sono i pacchetti live-boot e live-config che sono perltro tipici di Debian e non presenti in altre distro.

common #

  • coreutils // indispensabile whoami
  • cryptsetup // indispensabile
  • dosfstools // indispensabile creazione disco EFI
  • dpkg-dev // necessario per la creazione della repository locale yolk
  • isolinux // indispensabile per boot
  • live-boot
  • live-boot-initramfs-tools
  • parted // indispensabile
  • rsync // indispensabile
  • squashfs-tools // indispensabile
  • syslinux-common
  • xorriso // indispensabile

dipendenti dalla architettura #

  • package: syslinux, arch: [‘amd64’, ‘i386’]
  • package: ‘syslinux-efi’, arch: [‘arm64’, ‘armel’]

dipendenti dalla versione #

  • package: ‘live-config’, versions: [‘jessie’, ‘stretch’]
  • package: ‘live-config-systemd’, versions: [‘jessie’, ‘stretch’, ‘buster’]
  • package: ‘live-config-sysvinit’, versions: [‘beowulf’, ‘chimaera’, ‘daedalus’]
  • package: ‘open-infrastructure-system-config’,versions: [‘bionic’]

Pacchetti live #

live-boot #

live-boot contains the components to configure a live system during the boot process (early userspace). Do not install this package on your regular system, it is only meant to be used in a live image.

live-boot-initramfs-tools Live System Boot Components (initramfs-tools backend)

live-config #

live-config contains the components to configure a live system during the boot process (late userspace).

distros that can be remastered with eggs

You can use eggs on all the following distributions, always having an easy installer available: krill a console line tool, but usable as GUI for the “older” distributions like Debian jessie and Debian strecth or the versatile graphical installer calamares for all the others. Of course You can always use krill on system without GUI, this is a clear advantage if you want to build easy-to-install liveCDs for server systems.

  • Debian: 8.x jessie, 9.x stretch, 10.x buster, 11.x bullseye (stable), bookworm (n development);

  • Devuan: 3.x beowulf, 4.x chimaera (stable), 5.x daedalus (n development);

  • Ubuntu 18.04 LTS bionic, 20.04 LTS focal, 21.10 hirsute, 21.10 impish, jammy (n development);

and all the derivates, including deepin, linuxmint, KDE neon and many, many others.

Distros derivated from Debian, Devuan and Ubuntu

krill installer
calamares installer

Prior to the release of eggs-8.17.11 a big effort was also made to review many old iso’s previously released from Debian jessie in naked and minino versions, to naked versions of stretch and buster with both amd64 and i386 architecture.

In this screenshot you can see the eggs krill installer in action on a Debian jessie derivative that does not support calamares minino-TDE
krill installer minino

Again calamares installing Linux Mint tricia i386, based on Ubuntu bionic and remastered with eggs-8.17.11.

calamares installer on linuxmint tricia 386

This is a latest addition Kali Linux a security distribution. Some people will turn up their nose at the idea of a remastered security distro and I can agree. But with eggs we can remaster it ourselves and decide in which way to modify it, so - all in all - the problem does not arise. Moreover it can be used directly live with our configurations, etc.

kali-remaster

Once the ISO image is obtained, the installation takes place with calamares in no time, moreover being a live system it can also perform its tasks directly.

kali-installing

This is what kali linux remastered looks like, of course you can apply any customization.

kali-installed

neon-user-20211028-132

In my adventure to create an updated remastering tool compatible with the Debian, Ubuntu, Devuan world I’m running into the following problem:

I can remaster practically everything from Debian Jessie to bookworm and from Ubuntu bionic up to the development version jammy - instead, I can not and I have not understood why - to do the same with the latest version of neon with plasma-5.23.
I also report that the problem does not occur, however, with Kubuntu 21.10 impish with the beta of plasma-5.23 installed.
From a neon system installed, the ISO builds normally and is bootable, but when I go to boot from the liveCD obtained, the system does not come to show the monitor and moreover giving ALT-CTRL F2, F3, etc can not open the console.

Someone, could give me some clues or suggest me a way to debug?

Contact #

ubuntu 22.04 jammy
debian 12 bookworm
neon-user-20211028-132

penguins-eggs-ppa

After a bit of trial and error I finally managed to recreate the ppa penguins-eggs-ppa repository.

This repository currently includes only the amd64 version, I don’t know the method to include also the i386 and ARM versions.

I think it’s not so difficult to create this repository with all architectures but, unfortunately, I’m not an expert in this field. If someone can help is, of course, welcome.

Usage #

Copy and past the follow two lines:

1
2
curl -SsL  https://pieroproietti.github.io/penguins-eggs-ppa/KEY.gpg | gpg --dearmor | sudo tee /usr/share/keyrings/penguins-eggs-ppa-keyring.gpg
sudo curl -s --compressed -o /etc/apt/sources.list.d/penguins-eggs-ppa.list "https://pieroproietti.github.io/penguins-eggs-ppa/penguins-eggs-ppa.list"

Then

1
2
sudo apt update
sudo install eggs

After that you can continue following the eggs official book.

removed forum and others stuffs

Since October 20 I removed the penguins-eggs forum, unfortunately I didn’t have time to consult it and I prefer so there is only one place for assistance and support, in this case facebook group penguins-eggs where most users - technical or not - can easily sign up.

Similarly I removed the link to devpost, for the same reasons, I do not have time to update it. You can find videos on youtube.

I also have problems with the penguins-eggs-ppa repository. I created it following this guide but at the moment I have no way to update it, I should redo it from scratch. If someone is expert can contact me either on facebook group or email me.

the ppa repository is important because it would allow the upgrade in standard mode through apt of the remastering software. I plan on recreating it, but I wouldn’t mind some assistance and help.

I believe that this remastering tool can be of great use and necessary to facilitate the existence of small and large remasters of Debian, Ubuntu, etc. Unfortunately, keeping up with a myriad of cases is difficult and, lately, I don’t have too much time to devote to penguins-eggs.

Basically keeping general purpose remastering software up to date requires more of an organization than an individual, I’ve achieved a good level of quality in the product, but keeping it up to date continually requires new development, debugging and feedback.

At the moment eggs is probably the only software capable of remastering for both i386 and amd64 Debian, Devuan, Ubuntu and derivatives. Also, in perspective, it is compiled for arm64 and armel as well, but it is too big for one developer.

Thanks for your attention

Piero Proietti

return to the origins eggs 8.17.x

Some time ago, after an incautious update, I found myself in the unpleasant situation of removing node8 from the compatibility list with eggs. Node8 is, however, the only version of node compatible with i386 architecture and therefore, for a remastering program, important.

Since then, this happened roughly at the end of June 2021, I have also made subsequent changes alas lost or to be recovered in the maze of git.

I took the last working version of eggs the 8.0.30 and recompiled it as eggs-8.17.0 with the intention to update the upgradable, I’ve already seen that a simple npm update blows compatibility, and reintroduce the changes after the switch, especially the calamares configuration without the need for password entry.

Cubic

Cubic è un acronimo e sta per Custom Ubuntu ISO Creator. Questo software però funziona anche su Debian e riesce a rielaborare anche le ISO prodotte con eggs, per cui diventa interessante per consentire una post-produzione di una immagine creata con eggs.

Cubic ha una propria storia ed un diverso approccio alla riproduzione, non rende diciamo così l’intero sistema riproduttivo ma si limita a partire dalla iso preeesistente per andare spacchettarla e ricostituirla. Vengono qua creati due archivi il primo denominato root che in sostanza è l’equivalente di filesystem.squashfs di eggs (il sistema chrooted che andiamo a riconfigurare) e l’altro, denominato disk che non è altro che l’equivalente della cartella denominata ISO in /home/eggs che, una volta compressa sarà il nostro systema live.

/home/eggs/ovarium/filesystem.squashfs -> custom-root
/home/eggs/ovarium/iso -> custom-disk

Essendo l’autore di eggs, mi si permetta di fare rifermento ai nomi di eggs, per semplicità, anche se poi si tratta sostenazialmente della stessa architettura.

Installazione di eggs #

Installiamo eggs semplicemente aggiungendo la repository di eggs alle nostre repository apt. Basterà copiare ed incollare le due seguenti righe:

curl -SsL https://pieroproietti.github.io/penguins-eggs-ppa/debian/KEY.gpg | sudo apt-key add -
sudo curl -s --compressed -o /etc/apt/sources.list.d/penguins-eggs-ppa.list "https://pieroproietti.github.io/penguins-eggs-ppa/debian/penguins-eggs-ppa.list"

A questo punto possiamo aggiornare il sistema, ed andremo ad eseguire l’installazione.

sudo apt update

sudo apt install eggs

sudo eggs config

sudo eggs calamares --install

sudo eggs dad -d

eggs info

Creazione di un iso con eggs #

eggs produce --fast

Abbiamo creato una immagine ISO in /home/eggs che possiamo utilizzare per l’avvio di un nuovo sistema oppure per una ulteriore rielaborazione con cubic.

Installazione di cubic #

L’installazione di cubic è molto semplice, si riduce ad aggiungere la repo nelle nostre sorgenti apt. Per prima cosa installeremo il pacchetto software-properties-common per avere disponibile il comando: apt-add-repository

sudo apt-get install software-properties-common

A questo punto andiamo ad installare cubic-wizard
sudo apt-add-repository ppa:cubic-wizard/release

sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 6494C6D6997C215E

Per risolvere eventuali problemi con chiavi non trovate, ho semplicemente editato il file

/etc/apt/source.list.d/cubic-wizard-ubuntu-release-impish.list

aggiungo [trusted=yes] alla riga di apt

deb [trusted=yes] http://ppa.launchpad.net/cubic-wizard/release/ubuntu impish main

A questo punto, sudo apt update ed sudo apt install cubic e ci troviamo cubic installato.

Rielaborazione della immagine creata con eggs #

Andiamo a create una cartella denominata “custom”, ed esempio:

mkdir custom

Bene, adesso avviamo cubic, basterà digitare cubic al prompt del terminale.

cubic-custom

A qusto punto andiamo a selezionare la iso precedentemente creata con eggs /home/eggs/egg-of-debian-bullseye-xfce-amd64_2021-09-10_1214.iso

cubic-select-iso

In questa finestra potremo aggiungere o rimuovere o aggiornare i programmai.

cubic-customize

Terminata questa operazione, ci verrà proposto di selezionare quali programmi rimuovere per l’opzione minimun.

cubic-minimun

NixOS

La storia di NixOS è abbastanza lunga, pure se al momento per me completamente ignota. Come presentazione lascio dei link presi da widipedia.

Nel 2003, Eelco Dolstra ha iniziato NixOS come un progetto di ricerca. Nel 2015, è stata fondata Stichting NixOS con lo scopo di supportare progetti come NixOS che implementano il modello di distribuzione puramente funzionale.

Andremo a farci una semplice - per quanto possibile - passeggiata cercando di installare NixOS in una macchina virtuale e configurarla per i nostri scopi, nel nostro caso una macchina per sviluppare con nodejs.

Installatione #

Potete scaricare NixOS in più modalita dalla pagina NixOS Download page. Sceglieremo la ISO della versione minima - corrispondente alle nostre naked - per poter customizzare la stessa secondo le nostre esigenze.

Effettuare il boot dalla iso nixos-minimal, se si desidera la lingua italiana: sudo loadkeys it. Se i caratteri sono troppo piccoli, potete lanciare il comando: setfont ter-v32n, se desiderate è possibile connettervi alla VM con ssh. Creare una password per l’utente nixos che di default non è presente, rilevate l’indirizzo con ip a e quindi da terminale, sulla macchina ospite, connettevi digitando: ssh nixos@192.168.61.100

A questo punto siamo pronti all’installazione ed abbiamo disponibile la possibilità di effettuare dei cut and past dei vari comandi di seguito riportati.

Partizionamento dei dischi per BIOS standard #

La prima cosa da fare è partizionare il disco, nixos non prevede un installer grafico.

1
2
3
parted /dev/sda -- mklabel msdos
parted /dev/sda -- mkpart primary 1MiB -8GiB
parted /dev/sda -- mkpart primary linux-swap -8GiB 100%

Formattazione per BIOS standard #

1
2
mkfs.ext4 -L nixos /dev/sda1
mkswap -L swap /dev/sda2

Installazione #

1
2
mount /dev/disk/by-label/nixos /mnt
swapon /dev/sda2

Creazione configurazione #

1
nixos-generate-config --root /mnt

Adattamento e customizzazione #

A questo punto andiamo a modificare la configurazione per stabilire servizi, programmi etc di cui vogliamo disporre. I commenti nel codice ci indicano la strada, ma volendo potete anche abbreviarla copiando la configurazione posta a fine articolo e salvarla configuration.nix in /mnt.

nano /mnt/etc/nixos/configuration.nix

Dovete impostare l’opzione boot.loader.grub.device per specificare in quale disco risiede il grub boot loader altrimenti NixOS non può avviarsi. Esempio: boot.loader.grub.device=/dev/sda

Installazione #

1
nixos-install

Alla fine dell’installazione verrà immessa la password di root.

All’avvio non spaventatevi se il vostro utente non entra, bisognerà creare la password dello stesso. Basta aprire un terminale di root e digitare: sudo password artisan per creare la password.

Visual studio code #

Installiamo visual studio code, dobbiamo in primo luogo abilitare i programi non free.

1
2
export NIXPKGS_ALLOW_UNFREE=1
nix-env -iA nixos.vscode

Nodejs #

Installiamo nodejs.

1
nix-env -iA nixos.nodejs

Proviamo l’ebbrezza di smanettare su eggs #

A questo punto scarichiamo eggs dalla repository con git e quindi anchiamo a provare a compilarlo.

1
2
3
git clone https://github.com/pieroproietti/penguins-eggs
cd penguins-eggs
./init

NB eggs, prima di installare i pacchetto npm, necessita che siano installati pure perrisbrewery e oclif.dev che vendono prelevati sempre dalle mie repo con il comando custom ./init.

Va tutto bene, però l’installarione dei pacchetti npm viene interrotta e genera errore in quanto mancano i pacchetti per la compilazione, le cosidette - in termini Debian - build-essential.

Qua la faccenda è complessa, risolveremo in una prossima puntata, ma in ogni modo, brevemente ci siamo costruiti una nostra stazione di lavoro di cui, in buona sostanza, tutto quel che ci serve è raccolto nel file di descrizione.

Conclusioni #

NixOS è interessante, perchè in ultima analisi permette un approccio semplice alla costruzione di una macchina di lavoro, è come dire nato per essere customizzato ed molto affidabile.

Mi piacerebbe però - se fosse possibile - miscelare i due sistemi Debian e NixOS, per non dover disimpare ed apprendere di nuovo.

La cosa - per adesso - non sò se sia fattibile.

Da quello che mi risulta è possibile installare facilmente nix in un sistema Debian o altre distribuzioni e, per quello che ho capito, non è un problema la coesistenza dei due package manager apt e nix un po’ come succede con flatpack. Tuttavia ignoro sino a che punto si possa spingere nella coesistenza degli stessi. In soldoni se, partendo da una Debian minimale, sul quale si installata nix sia poi possibile aggiungere nixos e far convivere i due sistemi. Per essere ancora più chiari, se partendo da una ristretta repository Debian dal quale installare i pacchetti deb indispensabili, sia poi possibile attingere ed installare tutto il resto via nix-env -iA nixos.xfce4 etc.

Ai poster l'ardua sentenza, mi sento di poter dire che il sistema è figo, pure se richiede l’ennesimo cambiamento di paradigma, memorizzazione di nuovi termini, comendi e sintassi, etc. Nulla in contrario in linea di massima, ma è evidente che anche in questo caso le “limitate” umane capacità meritino di essere prese in considerazione. Questo tuttavia non è un problema per un giovane che sta iniziando ma può esserlo per uno sviluppatore di una certa età come il sottoscritto e, forse è anche all’origine della scarsa diffusione di NixOS stesso, che in effetti è veramente una perla in termini di possibilità di modificare, tornare indietro, consolidare il lavoro fatto, etc.

/images/nixos-xfce-code

Esempio di configurazione #

Questo è un esempio della configurazione utilizzata, potete fare un cut e copy e sostituirlo al file /mnt/etc/nixos/configuration.nix creato con il comando nixos-generate-config –root /mnt per il vostro esperimento.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
# Edit this configuration file to define what should be installed on
# your system. Help is available in the configuration.nix(5) man page
# and in the NixOS manual (accessible by running ‘nixos-help’).

{ config, pkgs, ... }:

{
imports =
[ # Include the results of the hardware scan.
./hardware-configuration.nix
];

# Use the GRUB 2 boot loader.
boot.loader.grub.enable = true;
boot.loader.grub.version = 2;
# boot.loader.grub.efiSupport = true;
# boot.loader.grub.efiInstallAsRemovable = true;
# boot.loader.efi.efiSysMountPoint = "/boot/efi";
# Define on which hard drive you want to install Grub.
boot.loader.grub.device = "/dev/sda"; # or "nodev" for efi only

networking.hostName = "nixos"; # Define your hostname.
# networking.wireless.enable = true; # Enables wireless support via wpa_supplicant.

# Set your time zone.
time.timeZone = "Europe/Rome";

# The global useDHCP flag is deprecated, therefore explicitly set to false here.
# Per-interface useDHCP will be mandatory in the future, so this generated config
# replicates the default behaviour.
networking.useDHCP = false;
networking.interfaces.ens18.useDHCP = true;

# Configure network proxy if necessary
# networking.proxy.default = "http://user:password@proxy:port/";
# networking.proxy.noProxy = "127.0.0.1,localhost,internal.domain";

# Select internationalisation properties.
i18n.defaultLocale = "it_IT.UTF-8";
console = {
font = "Lat2-Terminus16";
keyMap = "it";
};

# Enable the X11 windowing system.
services.xserver = {
enable = true;
desktopManager = {
xterm.enable = false;
xfce.enable = true;
};
displayManager.defaultSession = "xfce";
};


# Configure keymap in X11
services.xserver.layout = "it";
services.xserver.xkbOptions = "eurosign:e";

# Enable CUPS to print documents.
# services.printing.enable = true;

# Enable sound.
# sound.enable = true;
# hardware.pulseaudio.enable = true;

# Enable touchpad support (enabled default in most desktopManager).
# services.xserver.libinput.enable = true;

# Define a user account. Don't forget to set a password with ‘passwd’.
users.users.artisan = {
isNormalUser = true;
extraGroups = [ "wheel" ]; # Enable ‘sudo’ for the user.
};

# List packages installed in system profile. To search, run:
# $ nix search wget
environment.systemPackages = with pkgs; [
nano # Do not forget to add an editor to edit configuration.nix! The Nano editor is also installed by default.
wget
firefox
git
];

# Some programs need SUID wrappers, can be configured further or are
# started in user sessions.
# programs.mtr.enable = true;
# programs.gnupg.agent = {
# enable = true;
# enableSSHSupport = true;
# };

# List services that you want to enable:

# spice-vdagent
services.spice-vdagentd.enable = true;

# Enable the OpenSSH daemon.
services.openssh.enable = true;

# Open ports in the firewall.
# networking.firewall.allowedTCPPorts = [ ... ];
# networking.firewall.allowedUDPPorts = [ ... ];
# Or disable the firewall altogether.
# networking.firewall.enable = false;

# This value determines the NixOS release from which the default
# settings for stateful data, like file locations and database versions
# on your system were taken. It‘s perfectly fine and recommended to leave
# this value at the release version of the first install of this system.
# Before changing this value read the documentation for this option
# (e.g. man configuration.nix or on https://nixos.org/nixos/options.html).
system.stateVersion = "21.05"; # Did you read the comment?

}