Splitting desktop to user and gnome and adding agenix

This commit is contained in:
Lyes Saadi 2025-03-22 14:16:04 +01:00
parent 0350576970
commit 49ad024034
Signed by: lyes
GPG key ID: 55A1D803917CF39A
14 changed files with 453 additions and 274 deletions

140
flake.lock generated
View file

@ -1,5 +1,48 @@
{ {
"nodes": { "nodes": {
"agenix": {
"inputs": {
"darwin": "darwin",
"home-manager": "home-manager",
"nixpkgs": "nixpkgs",
"systems": "systems"
},
"locked": {
"lastModified": 1736955230,
"narHash": "sha256-uenf8fv2eG5bKM8C/UvFaiJMZ4IpUFaQxk9OH5t/1gA=",
"owner": "ryantm",
"repo": "agenix",
"rev": "e600439ec4c273cf11e06fe4d9d906fb98fa097c",
"type": "github"
},
"original": {
"owner": "ryantm",
"repo": "agenix",
"type": "github"
}
},
"darwin": {
"inputs": {
"nixpkgs": [
"agenix",
"nixpkgs"
]
},
"locked": {
"lastModified": 1700795494,
"narHash": "sha256-gzGLZSiOhf155FW7262kdHo2YDeugp3VuIFb4/GGng0=",
"owner": "lnl7",
"repo": "nix-darwin",
"rev": "4b9b83d5a92e8c1fbfd8eb27eda375908c11ec4d",
"type": "github"
},
"original": {
"owner": "lnl7",
"ref": "master",
"repo": "nix-darwin",
"type": "github"
}
},
"disko": { "disko": {
"inputs": { "inputs": {
"nixpkgs": [ "nixpkgs": [
@ -23,15 +66,36 @@
"home-manager": { "home-manager": {
"inputs": { "inputs": {
"nixpkgs": [ "nixpkgs": [
"agenix",
"nixpkgs" "nixpkgs"
] ]
}, },
"locked": { "locked": {
"lastModified": 1739757849, "lastModified": 1703113217,
"narHash": "sha256-Gs076ot1YuAAsYVcyidLKUMIc4ooOaRGO0PqTY7sBzA=", "narHash": "sha256-7ulcXOk63TIT2lVDSExj7XzFx09LpdSAPtvgtM7yQPE=",
"owner": "nix-community", "owner": "nix-community",
"repo": "home-manager", "repo": "home-manager",
"rev": "9d3d080aec2a35e05a15cedd281c2384767c2cfe", "rev": "3bfaacf46133c037bb356193bd2f1765d9dc82c1",
"type": "github"
},
"original": {
"owner": "nix-community",
"repo": "home-manager",
"type": "github"
}
},
"home-manager_2": {
"inputs": {
"nixpkgs": [
"nixpkgs"
]
},
"locked": {
"lastModified": 1742234739,
"narHash": "sha256-zFL6zsf/5OztR1NSNQF33dvS1fL/BzVUjabZq4qrtY4=",
"owner": "nix-community",
"repo": "home-manager",
"rev": "f6af7280a3390e65c2ad8fd059cdc303426cbd59",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -59,11 +123,11 @@
}, },
"nixos-hardware": { "nixos-hardware": {
"locked": { "locked": {
"lastModified": 1741792691, "lastModified": 1742631601,
"narHash": "sha256-f0BVt1/cvA0DQ/q3rB+HY4g4tKksd03ZkzI4xehC2Ew=", "narHash": "sha256-yJ3OOAmsGAxSl0bTmKUp3+cEYtSS+V6hUPK2rYhIPr8=",
"owner": "NixOS", "owner": "NixOS",
"repo": "nixos-hardware", "repo": "nixos-hardware",
"rev": "e1f12151258b12c567f456d8248e4694e9390613", "rev": "380ed15bcd6440606c6856db44a99140d422b46f",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -75,27 +139,27 @@
}, },
"nixpkgs": { "nixpkgs": {
"locked": { "locked": {
"lastModified": 1741862977, "lastModified": 1703013332,
"narHash": "sha256-prZ0M8vE/ghRGGZcflvxCu40ObKaB+ikn74/xQoNrGQ=", "narHash": "sha256-+tFNwMvlXLbJZXiMHqYq77z/RfmpfpiI3yjL6o/Zo9M=",
"owner": "NixOS", "owner": "NixOS",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "cdd2ef009676ac92b715ff26630164bb88fec4e0", "rev": "54aac082a4d9bb5bbc5c4e899603abfb76a3f6d6",
"type": "github" "type": "github"
}, },
"original": { "original": {
"owner": "NixOS", "owner": "NixOS",
"ref": "nixos-24.11", "ref": "nixos-unstable",
"repo": "nixpkgs", "repo": "nixpkgs",
"type": "github" "type": "github"
} }
}, },
"nixpkgs-unstable": { "nixpkgs-unstable": {
"locked": { "locked": {
"lastModified": 1742069588, "lastModified": 1742422364,
"narHash": "sha256-C7jVfohcGzdZRF6DO+ybyG/sqpo1h6bZi9T56sxLy+k=", "narHash": "sha256-mNqIplmEohk5jRkqYqG19GA8MbQ/D4gQSK0Mu4LvfRQ=",
"owner": "NixOS", "owner": "NixOS",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "c80f6a7e10b39afcc1894e02ef785b1ad0b0d7e5", "rev": "a84ebe20c6bc2ecbcfb000a50776219f48d134cc",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -107,11 +171,27 @@
}, },
"nixpkgs_2": { "nixpkgs_2": {
"locked": { "locked": {
"lastModified": 1735471104, "lastModified": 1742512142,
"narHash": "sha256-0q9NGQySwDQc7RhAV2ukfnu7Gxa5/ybJ2ANT8DQrQrs=", "narHash": "sha256-8XfURTDxOm6+33swQJu/hx6xw1Tznl8vJJN5HwVqckg=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "7105ae3957700a9646cc4b766f5815b23ed0c682",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixos-24.11",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs_3": {
"locked": {
"lastModified": 1742288794,
"narHash": "sha256-Txwa5uO+qpQXrNG4eumPSD+hHzzYi/CdaM80M9XRLCo=",
"owner": "nixos", "owner": "nixos",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "88195a94f390381c6afcdaa933c2f6ff93959cb4", "rev": "b6eaf97c6960d97350c584de1b6dcff03c9daf42",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -123,25 +203,41 @@
}, },
"root": { "root": {
"inputs": { "inputs": {
"agenix": "agenix",
"disko": "disko", "disko": "disko",
"home-manager": "home-manager", "home-manager": "home-manager_2",
"nix-flatpak": "nix-flatpak", "nix-flatpak": "nix-flatpak",
"nixos-hardware": "nixos-hardware", "nixos-hardware": "nixos-hardware",
"nixpkgs": "nixpkgs", "nixpkgs": "nixpkgs_2",
"nixpkgs-unstable": "nixpkgs-unstable", "nixpkgs-unstable": "nixpkgs-unstable",
"zen-browser": "zen-browser" "zen-browser": "zen-browser"
} }
}, },
"systems": {
"locked": {
"lastModified": 1681028828,
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
"owner": "nix-systems",
"repo": "default",
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
"type": "github"
},
"original": {
"owner": "nix-systems",
"repo": "default",
"type": "github"
}
},
"zen-browser": { "zen-browser": {
"inputs": { "inputs": {
"nixpkgs": "nixpkgs_2" "nixpkgs": "nixpkgs_3"
}, },
"locked": { "locked": {
"lastModified": 1742076998, "lastModified": 1742614294,
"narHash": "sha256-EuqbZFwam8dXNiuytI67rIUrF4ogy62OF2nGxWk8GGI=", "narHash": "sha256-bZbYlP/xqGyW2aVle742dFbc0npFnwJBzcEnXNywJgY=",
"owner": "0xc000022070", "owner": "0xc000022070",
"repo": "zen-browser-flake", "repo": "zen-browser-flake",
"rev": "30fdea2435aeeb961acba896b9b65bab4fd17003", "rev": "7fa9ec4e14d89e568ebaac302049980df7cf0cc9",
"type": "github" "type": "github"
}, },
"original": { "original": {

View file

@ -14,9 +14,19 @@
zen-browser.url = "github:0xc000022070/zen-browser-flake"; zen-browser.url = "github:0xc000022070/zen-browser-flake";
disko.url = "github:nix-community/disko"; disko.url = "github:nix-community/disko";
disko.inputs.nixpkgs.follows = "nixpkgs"; disko.inputs.nixpkgs.follows = "nixpkgs";
agenix.url = "github:ryantm/agenix";
}; };
outputs = { self, nixpkgs, nixpkgs-unstable, nixos-hardware, nix-flatpak, disko, ... }@attrs: { outputs = {
self,
nixpkgs,
nixpkgs-unstable,
nixos-hardware,
nix-flatpak,
disko,
agenix,
...
}@attrs: {
nixosConfigurations = { nixosConfigurations = {
lyes-pc = nixpkgs.lib.nixosSystem { lyes-pc = nixpkgs.lib.nixosSystem {
system = "x86_64-linux"; system = "x86_64-linux";
@ -26,6 +36,7 @@
./hosts/lyes-pc/disko-config.nix ./hosts/lyes-pc/disko-config.nix
./users/lyes ./users/lyes
./users/lyes/desktop
./modules ./modules
./modules/desktop ./modules/desktop
@ -33,11 +44,13 @@
# ./modules/nvidia # ./modules/nvidia
# ./modules/specialisations/old-kernel.nix # ./modules/specialisations/old-kernel.nix
# ./modules/specialisations/gaming.nix # ./modules/specialisations/gaming.nix
./modules/gnome
./modules/sway ./modules/sway
nix-flatpak.nixosModules.nix-flatpak nix-flatpak.nixosModules.nix-flatpak
nixos-hardware.nixosModules.framework-16-7040-amd nixos-hardware.nixosModules.framework-16-7040-amd
disko.nixosModules.disko disko.nixosModules.disko
agenix.nixosModules.default
]; ];
}; };

View file

@ -1,4 +1,4 @@
{ pkgs, ... }: { pkgs, agenix, ... }:
{ {
environment.systemPackages = with pkgs; [ environment.systemPackages = with pkgs; [
@ -16,11 +16,13 @@
man-pages-posix man-pages-posix
python3 python3
any-nix-shell any-nix-shell
cheat
# Nix # Nix
home-manager home-manager
nix-index nix-index
direnv direnv
agenix.packages."${system}".default
]; ];
# Some programs need SUID wrappers, can be configured further or are # Some programs need SUID wrappers, can be configured further or are

View file

@ -1,4 +1,4 @@
{ pkgs, lib, ... }: { ... }:
{ {
# Networking # Networking
@ -53,10 +53,4 @@
# Bluetooth # Bluetooth
hardware.bluetooth.enable = true; hardware.bluetooth.enable = true;
hardware.bluetooth.powerOnBoot = true; hardware.bluetooth.powerOnBoot = true;
# KDE Connect
programs.kdeconnect = {
enable = true;
package = lib.mkDefault pkgs.gnomeExtensions.gsconnect;
};
} }

View file

@ -1,90 +1,17 @@
{ pkgs, lib, config, zen-browser, ... }: { pkgs, lib, config, ... }:
let {
tex = (pkgs.texlive.combine { inherit (pkgs.texlive)
scheme-medium
lettre
wallpaper
lastpage
hyphenat
moresize
fontawesome5
montserrat
titlesec
ly1
footmisc
titling
frpseudocode
ebproof
comment;
});
in {
# Packages # Packages
environment.systemPackages = with pkgs; [ environment.systemPackages = with pkgs; [
# Web
zen-browser.packages."${system}".default
fragments
dropbox
varia
filezilla
whatip
epiphany
organicmaps
# Messaging # Messaging
thunderbird-128 thunderbird
discord
vesktop
whatsapp-for-linux
# element-desktop
fractal
zoom-us
# Image
drawing
gimp
loupe
snapshot
inkscape
# Video # Video
mpv
vlc vlc
syncplay
obs-studio
yt-dlp
handbrake
kooha
video-trimmer
(kodi.withPackages(kodiPkgs: with kodiPkgs; [
youtube
sponsorblock
pvr-iptvsimple
]))
# Audio # Audio
shortwave
gnome-podcasts
helvum
local.quadcastrgb
gnome-sound-recorder
easyeffects easyeffects
# Games
heroic
# cemu
prismlauncher
# vvvvvv
ryujinx
dolphin-emu
parsec-bin
unstable.suyu
# suyu
# Reading
# calibre
papers
# Office # Office
libreoffice libreoffice
onlyoffice-bin onlyoffice-bin
@ -95,137 +22,21 @@ in {
hunspellDicts.en_US hunspellDicts.en_US
hunspellDicts.en_GB-ize hunspellDicts.en_GB-ize
# Note taking
apostrophe
setzer
tex
pandoc
unstable.typst
# typst
tinymist
zotero
# Programming
git
git-lfs
vscode
# zed-editor
gcc
rustup
python3
ocaml
ocamlPackages.ocaml-lsp
ocamlPackages.ocamlformat
opam
ledit
nodejs
nil
nixd
nixfmt-rfc-style
protege # LogIA Course
haskellPackages.Agda
agdaPackages.standard-library
devtoolbox
elan
# Containers & VMs
toolbox
distrobox
gnome-boxes
# Virtualization
qemu
virt-manager
# System
gnome-firmware
# Utilities
ghostty
impression
resources
file-roller
baobab
planify
dosage-tracker
# Proton
protonmail-bridge-gui
protonmail-desktop
protonvpn-gui
proton-pass
# Customization
gnome-tweaks
gnome-extension-manager
adw-gtk3
paper-icon-theme
# gnomeExtensions.gsconnect
# Multimedia
pipewire.dev
# pulseaudio
libopus
# Printing # Printing
hplipWithPlugin hplipWithPlugin
]; ];
# Flatpaks # Flatpaks
services.flatpak = lib.mkIf (config?services.flatpak.packages) { services.flatpak = lib.mkIf (config?services.flatpak.packages) {
remotes = lib.mkOptionDefault [{
name = "gnome-nightly";
location = "https://nightly.gnome.org/gnome-nightly.flatpakrepo";
}];
packages = [ packages = [
# Image
"page.kramo.Sly"
# Video
"org.nickvision.tubeconverter"
# Audio
"io.github.revisto.drum-machine"
# Reading
"com.github.johnfactotum.Foliate"
# Science
"com.github.alexhuntley.Plots"
# Office
"com.belmoussaoui.Obfuscate"
"com.github.muriloventuroso.pdftricks"
"com.github.flxzt.rnote"
"com.github.jeromerobert.pdfarranger"
"garden.jamie.Morphosis"
# Utilities # Utilities
"com.belmoussaoui.Decoder"
"io.github.nokse22.minitext"
"org.gnome.World.PikaBackup" "org.gnome.World.PikaBackup"
"io.github.fabrialberio.pinapp"
"re.sonny.Eloquent"
# Customization # Customization
"ca.desrt.dconf-editor"
"app.drey.Damask"
"com.github.GradienceTeam.Gradience"
"com.github.tchx84.Flatseal" "com.github.tchx84.Flatseal"
# Games # Games
"com.usebottles.bottles" "com.usebottles.bottles"
"dev.tchx84.Gameeky"
"dev.tchx84.Gameeky.ThematicPack.FreedomValley"
"dev.tchx84.Gameeky.ThematicPack.Blasterman"
"dev.tchx84.Gameeky.ThematicPack.Wackman"
"net.zdechov.app.TransLines"
"io.github.nokse22.ultimate-tic-tac-toe"
# Programming
{ appId = "org.gnome.Builder.Devel"; origin = "gnome-nightly"; }
"app.drey.Biblioteca"
]; ];
uninstallUnmanaged = true; uninstallUnmanaged = true;

View file

@ -12,24 +12,6 @@
# Fingerprint # Fingerprint
services.fprintd.enable = true; services.fprintd.enable = true;
security.pam.services.login.fprintAuth = false;
security.pam.services.gdm-fingerprint.text = ''
auth required pam_shells.so
auth requisite pam_nologin.so
auth requisite pam_faillock.so preauth
auth required ${pkgs.fprintd}/lib/security/pam_fprintd.so
auth optional pam_permit.so
auth required pam_env.so
auth [success=ok default=1] ${pkgs.gdm}/lib/security/pam_gdm.so
auth optional ${pkgs.gnome-keyring}/lib/security/pam_gnome_keyring.so
account include login
password required pam_deny.so
session include login
session optional ${pkgs.gnome-keyring}/lib/security/pam_gnome_keyring.so auto_start
'';
# Touchpad # Touchpad
services.libinput.enable = true; services.libinput.enable = true;
@ -45,11 +27,6 @@
programs.xwayland.enable = true; programs.xwayland.enable = true;
environment.sessionVariables.NIXOS_OZONE_WL = "1"; environment.sessionVariables.NIXOS_OZONE_WL = "1";
# GNOME
services.xserver.displayManager.gdm.enable = true;
services.xserver.desktopManager.gnome.enable = true;
environment.gnome.excludePackages = [ pkgs.evince ];
# KDE # KDE
# services.desktopManager.plasma6.enable = true; # services.desktopManager.plasma6.enable = true;
# programs.ssh.askPassword = lib.mkForce "${pkgs.gnome.seahorse}/libexec/seahorse/ssh-askpass"; # programs.ssh.askPassword = lib.mkForce "${pkgs.gnome.seahorse}/libexec/seahorse/ssh-askpass";

39
modules/gnome/default.nix Normal file
View file

@ -0,0 +1,39 @@
{ pkgs, lib, ... }:
{
imports =
[
./packages.nix
];
# Fingerprint
security.pam.services.login.fprintAuth = false;
security.pam.services.gdm-fingerprint.text = ''
auth required pam_shells.so
auth requisite pam_nologin.so
auth requisite pam_faillock.so preauth
auth required ${pkgs.fprintd}/lib/security/pam_fprintd.so
auth optional pam_permit.so
auth required pam_env.so
auth [success=ok default=1] ${pkgs.gdm}/lib/security/pam_gdm.so
auth optional ${pkgs.gnome-keyring}/lib/security/pam_gnome_keyring.so
account include login
password required pam_deny.so
session include login
session optional ${pkgs.gnome-keyring}/lib/security/pam_gnome_keyring.so auto_start
'';
# GNOME
services.xserver.displayManager.gdm.enable = true;
services.xserver.desktopManager.gnome.enable = true;
environment.gnome.excludePackages = [ pkgs.evince ];
# KDE Connect
programs.kdeconnect = {
enable = true;
package = lib.mkDefault pkgs.gnomeExtensions.gsconnect;
};
}

107
modules/gnome/packages.nix Normal file
View file

@ -0,0 +1,107 @@
{ pkgs, lib, config, ... }:
{
environment.systemPackages = with pkgs; [
# Web
fragments
varia
whatip
epiphany
# Image
drawing
loupe
snapshot
# Video
kooha
video-trimmer
# Audio
shortwave
gnome-podcasts
gnome-sound-recorder
# Reading
papers
# Note taking
apostrophe
setzer
# Programming
devtoolbox
# Containers & VMs
gnome-boxes
# System
gnome-firmware
# Utilities
impression
resources
file-roller
baobab
planify
dosage-tracker
# Customization
gnome-tweaks
gnome-extension-manager
adw-gtk3
paper-icon-theme
];
services.flatpak = lib.mkIf (config?services.flatpak.packages) {
remotes = lib.mkOptionDefault [{
name = "gnome-nightly";
location = "https://nightly.gnome.org/gnome-nightly.flatpakrepo";
}];
packages = [
# Image
"page.kramo.Sly"
# Video
"org.nickvision.tubeconverter"
# Audio
"io.github.revisto.drum-machine"
# Reading
"com.github.johnfactotum.Foliate"
# Science
"com.github.alexhuntley.Plots"
# Office
"com.belmoussaoui.Obfuscate"
"com.github.muriloventuroso.pdftricks"
"com.github.flxzt.rnote"
"com.github.jeromerobert.pdfarranger"
"garden.jamie.Morphosis"
# Utilities
"com.belmoussaoui.Decoder"
"io.github.nokse22.minitext"
"io.github.fabrialberio.pinapp"
"re.sonny.Eloquent"
# Customization
"ca.desrt.dconf-editor"
"app.drey.Damask"
"com.github.GradienceTeam.Gradience"
# Games
"dev.tchx84.Gameeky"
"dev.tchx84.Gameeky.ThematicPack.FreedomValley"
"dev.tchx84.Gameeky.ThematicPack.Blasterman"
"dev.tchx84.Gameeky.ThematicPack.Wackman"
# Programming
{ appId = "org.gnome.Builder.Devel"; origin = "gnome-nightly"; }
"app.drey.Biblioteca"
];
};
}

View file

@ -0,0 +1,32 @@
{ pkgs, home-manager, ... }:
{
imports =
[
./packages.nix
home-manager.nixosModules.default
];
users.users.lyes = {
description = "Lyes Saadi";
home = "/home/lyes";
isNormalUser = true;
initialHashedPassword = ""; # Set for vms and initial installations
extraGroups = [ "wheel" "networkmanager" ];
shell = pkgs.fish;
};
home-manager.useUserPackages = true;
home-manager.useGlobalPkgs = true;
home-manager.users.lyes = { ... }: {
imports =
[
./home.nix
];
home.username = "lyes";
home.homeDirectory = "/home/lyes";
home.stateVersion = "22.11";
};
}

View file

@ -1,9 +1,9 @@
{ pkgs, nixpkgs-unstable, lib, config, ... }: { pkgs, ... }:
{ {
# Packages # Packages
users.users.lyes.packages = with pkgs; [ users.users.lyes.packages = with pkgs; [
# Commandline # Commandline Utilities
starship starship
wl-clipboard wl-clipboard
sl sl

View file

@ -1,32 +1,8 @@
{ pkgs, home-manager, ... }: { ... }:
{ {
imports = imports =
[ [
./packages.nix ./common
home-manager.nixosModules.default
]; ];
users.users.lyes = {
description = "Lyes Saadi";
home = "/home/lyes";
isNormalUser = true;
initialHashedPassword = ""; # Set for vms and initial installations
extraGroups = [ "wheel" "networkmanager" ];
shell = pkgs.fish;
};
home-manager.useUserPackages = true;
home-manager.useGlobalPkgs = true;
home-manager.users.lyes = { ... }: {
imports =
[
./home.nix
];
home.username = "lyes";
home.homeDirectory = "/home/lyes";
home.stateVersion = "22.11";
};
} }

View file

@ -0,0 +1,8 @@
{ ... }:
{
imports =
[
./packages.nix
];
}

View file

@ -0,0 +1,124 @@
{ pkgs, zen-browser, ... }:
let
tex = (pkgs.texlive.combine { inherit (pkgs.texlive)
scheme-medium
lettre
wallpaper
lastpage
hyphenat
moresize
fontawesome5
montserrat
titlesec
ly1
footmisc
titling
frpseudocode
ebproof
comment;
});
in {
users.users.lyes.packages = with pkgs; [
# Web
zen-browser.packages."${system}".default
dropbox
filezilla
organicmaps
# Messaging
discord
vesktop
whatsapp-for-linux
# element-desktop
fractal
zoom-us
# Image
gimp
inkscape
# Video
mpv
syncplay
obs-studio
yt-dlp
handbrake
(kodi.withPackages(kodiPkgs: with kodiPkgs; [
youtube
sponsorblock
pvr-iptvsimple
]))
# Audio
helvum
local.quadcastrgb
# Games
heroic
# cemu
prismlauncher
# vvvvvv
ryujinx
dolphin-emu
parsec-bin
unstable.suyu
# suyu
# factorio
# Reading
# calibre
# Note taking
tex
pandoc
unstable.typst
# typst
tinymist
zotero
# Programming
git
git-lfs
vscode
# zed-editor
gcc
rustup
python3
ocaml
ocamlPackages.ocaml-lsp
ocamlPackages.ocamlformat
opam
ledit
nodejs
nil
nixd
nixfmt-rfc-style
protege # LogIA Course
haskellPackages.Agda
agdaPackages.standard-library
elan
# Containers & VMs
toolbox
distrobox
# Virtualization
qemu
virt-manager
# Utilities
ghostty
# Proton
protonmail-bridge-gui
protonmail-desktop
protonvpn-gui
proton-pass
# Multimedia
pipewire.dev
# pulseaudio
libopus
];
}