Refactoring and addition of mpd

This commit is contained in:
Lyes Saadi 2025-07-28 13:05:47 +02:00
parent fc5a17714d
commit 5a7ab0fc05
Signed by: lyes
GPG key ID: 55A1D803917CF39A
12 changed files with 253 additions and 231 deletions

72
flake.lock generated
View file

@ -4,7 +4,9 @@
"inputs": {
"darwin": "darwin",
"home-manager": "home-manager",
"nixpkgs": "nixpkgs",
"nixpkgs": [
"nixpkgs"
],
"systems": "systems"
},
"locked": {
@ -50,11 +52,11 @@
]
},
"locked": {
"lastModified": 1751854533,
"narHash": "sha256-U/OQFplExOR1jazZY4KkaQkJqOl59xlh21HP9mI79Vc=",
"lastModified": 1753140376,
"narHash": "sha256-7lrVrE0jSvZHrxEzvnfHFE/Wkk9DDqb+mYCodI5uuB8=",
"owner": "nix-community",
"repo": "disko",
"rev": "16b74a1e304197248a1bc663280f2548dbfcae3c",
"rev": "545aba02960caa78a31bd9a8709a0ad4b6320a5c",
"type": "github"
},
"original": {
@ -91,11 +93,11 @@
]
},
"locked": {
"lastModified": 1751990210,
"narHash": "sha256-krWErNDl9ggMLSfK00Q2BcoSk3+IRTSON/DiDgUzzMw=",
"lastModified": 1753888434,
"narHash": "sha256-xQhSeLJVsxxkwchE4s6v1CnOI6YegCqeA1fgk/ivVI4=",
"owner": "nix-community",
"repo": "home-manager",
"rev": "218da00bfa73f2a61682417efe74549416c16ba6",
"rev": "0630790b31d4547d79ff247bc3ba1adda3a017d9",
"type": "github"
},
"original": {
@ -113,11 +115,11 @@
]
},
"locked": {
"lastModified": 1743604125,
"narHash": "sha256-ZD61DNbsBt1mQbinAaaEqKaJk2RFo9R/j+eYWeGMx7A=",
"lastModified": 1752603129,
"narHash": "sha256-S+wmHhwNQ5Ru689L2Gu8n1OD6s9eU9n9mD827JNR+kw=",
"owner": "nix-community",
"repo": "home-manager",
"rev": "180fd43eea296e62ae68e079fcf56aba268b9a1a",
"rev": "e8c19a3cec2814c754f031ab3ae7316b64da085b",
"type": "github"
},
"original": {
@ -144,11 +146,11 @@
},
"nixos-hardware": {
"locked": {
"lastModified": 1752048960,
"narHash": "sha256-gATnkOe37eeVwKKYCsL+OnS2gU4MmLuZFzzWCtaKLI8=",
"lastModified": 1753122741,
"narHash": "sha256-nFxE8lk9JvGelxClCmwuJYftbHqwnc01dRN4DVLUroM=",
"owner": "NixOS",
"repo": "nixos-hardware",
"rev": "7ced9122cff2163c6a0212b8d1ec8c33a1660806",
"rev": "cc66fddc6cb04ab479a1bb062f4d4da27c936a22",
"type": "github"
},
"original": {
@ -160,11 +162,11 @@
},
"nixpkgs": {
"locked": {
"lastModified": 1745391562,
"narHash": "sha256-sPwcCYuiEopaafePqlG826tBhctuJsLx/mhKKM5Fmjo=",
"lastModified": 1753694789,
"narHash": "sha256-cKgvtz6fKuK1Xr5LQW/zOUiAC0oSQoA9nOISB0pJZqM=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "8a2f738d9d1f1d986b5a4cd2fd2061a7127237d7",
"rev": "dc9637876d0dcc8c9e5e22986b857632effeb727",
"type": "github"
},
"original": {
@ -192,11 +194,11 @@
},
"nixpkgs-unstable": {
"locked": {
"lastModified": 1751792365,
"narHash": "sha256-J1kI6oAj25IG4EdVlg2hQz8NZTBNYvIS0l4wpr9KcUo=",
"lastModified": 1753694789,
"narHash": "sha256-cKgvtz6fKuK1Xr5LQW/zOUiAC0oSQoA9nOISB0pJZqM=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "1fd8bada0b6117e6c7eb54aad5813023eed37ccb",
"rev": "dc9637876d0dcc8c9e5e22986b857632effeb727",
"type": "github"
},
"original": {
@ -208,27 +210,11 @@
},
"nixpkgs_2": {
"locked": {
"lastModified": 1751792365,
"narHash": "sha256-J1kI6oAj25IG4EdVlg2hQz8NZTBNYvIS0l4wpr9KcUo=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "1fd8bada0b6117e6c7eb54aad5813023eed37ccb",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixos-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs_3": {
"locked": {
"lastModified": 1743448293,
"narHash": "sha256-bmEPmSjJakAp/JojZRrUvNcDX2R5/nuX6bm+seVaGhs=",
"lastModified": 1752480373,
"narHash": "sha256-JHQbm+OcGp32wAsXTE/FLYGNpb+4GLi5oTvCxwSoBOA=",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "77b584d61ff80b4cef9245829a6f1dfad5afdfa3",
"rev": "62e0f05ede1da0d54515d4ea8ce9c733f12d9f08",
"type": "github"
},
"original": {
@ -245,7 +231,7 @@
"home-manager": "home-manager_2",
"nix-flatpak": "nix-flatpak",
"nixos-hardware": "nixos-hardware",
"nixpkgs": "nixpkgs_2",
"nixpkgs": "nixpkgs",
"nixpkgs-stable": "nixpkgs-stable",
"nixpkgs-unstable": "nixpkgs-unstable",
"zen-browser": "zen-browser"
@ -269,14 +255,14 @@
"zen-browser": {
"inputs": {
"home-manager": "home-manager_3",
"nixpkgs": "nixpkgs_3"
"nixpkgs": "nixpkgs_2"
},
"locked": {
"lastModified": 1751930356,
"narHash": "sha256-xiG5vY4KhrIfUGb/MyPXaDiatFJ0mQngook01X4VwHg=",
"lastModified": 1753850692,
"narHash": "sha256-FF9u38mWimyCUL1iZpqWiuKdAqDZgejJ2JFB4MK09SE=",
"owner": "0xc000022070",
"repo": "zen-browser-flake",
"rev": "06c1a125bfa2002e9d84ebf655271c6f06ab1f38",
"rev": "ddeb3b3d529aa64be59b46d43bf1d579b256e1b0",
"type": "github"
},
"original": {

View file

@ -6,70 +6,39 @@
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
nixpkgs-unstable.url = "github:NixOS/nixpkgs/nixos-unstable";
nixpkgs-stable.url = "github:NixOS/nixpkgs/nixos-24.11";
# home-manager.url = "github:nix-community/home-manager/release-24.11";
home-manager.url = "github:nix-community/home-manager/master";
home-manager.inputs.nixpkgs.follows = "nixpkgs";
home-manager = {
url = "github:nix-community/home-manager/master";
inputs.nixpkgs.follows = "nixpkgs";
};
nixos-hardware.url = "github:NixOS/nixos-hardware/master";
nix-flatpak.url = "github:gmodena/nix-flatpak/latest";
zen-browser.url = "github:0xc000022070/zen-browser-flake";
disko.url = "github:nix-community/disko";
disko.inputs.nixpkgs.follows = "nixpkgs";
agenix.url = "github:ryantm/agenix";
disko = {
url = "github:nix-community/disko";
inputs.nixpkgs.follows = "nixpkgs";
};
outputs = {
self,
nixpkgs,
nixpkgs-unstable,
nixpkgs-stable,
nixos-hardware,
nix-flatpak,
disko,
agenix,
...
}@attrs: {
agenix = {
url = "github:ryantm/agenix";
inputs.nixpkgs.follows = "nixpkgs";
};
};
outputs = { self, nixpkgs, ... }@inputs: {
nixosConfigurations = {
lyes-pc = nixpkgs.lib.nixosSystem {
system = "x86_64-linux";
specialArgs = attrs;
modules = [
./hosts/lyes-pc
./hosts/lyes-pc/disko-config.nix
./users/lyes
./users/lyes/desktop
./modules
./modules/desktop
./modules/gaming
# ./modules/nvidia
# ./modules/specialisations/old-kernel.nix
# ./modules/specialisations/gaming.nix
./modules/gnome
./modules/sway
nix-flatpak.nixosModules.nix-flatpak
nixos-hardware.nixosModules.framework-16-7040-amd
disko.nixosModules.disko
agenix.nixosModules.default
];
specialArgs = inputs;
modules = [ ./hosts/lyes-pc ];
};
desktop-iso = nixpkgs.lib.nixosSystem {
system = "x86_64-linux";
specialArgs = attrs;
modules = [
./hosts/iso
./modules
./modules/desktop
./modules/gaming
./modules/nvidia
nix-flatpak.nixosModules.nix-flatpak
"${nixpkgs}/nixos/modules/installer/cd-dvd/installation-cd-minimal.nix"
"${nixpkgs}/nixos/modules/installer/cd-dvd/channel.nix"
];
specialArgs = inputs;
modules = [ ./hosts/iso ];
};
};
};

View file

@ -1,7 +1,20 @@
{ pkgs, lib, ... }:
{ pkgs, lib, nix-flatpak, nixpkgs, ... }:
let
calamares-auto-start = pkgs.makeAutostartItem { name = "io.calamares.calamares"; package = pkgs.calamares-nixos; };
in {
import =
[
../../modules
../../modules/desktop
../../modules/gaming
../../modules/nvidia
nix-flatpak.nixosModules.nix-flatpak
"${nixpkgs}/nixos/modules/installer/cd-dvd/installation-cd-minimal.nix"
"${nixpkgs}/nixos/modules/installer/cd-dvd/channel.nix"
];
# VMs
services.spice-vdagentd.enable = true;
services.qemuGuest.enable = true;

View file

@ -1,8 +1,26 @@
{ pkgs, ... }:
{ config, nix-flatpak, nixos-hardware, disko, agenix, ... }:
{
imports = [
imports =
[
# Hosts
./hardware-configuration.nix
./hardware.nix
./disko-config.nix
../../users/lyes
../../users/lyes/desktop
../../modules
../../modules/desktop
../../modules/gaming
../../modules/gnome
../../modules/sway
nix-flatpak.nixosModules.nix-flatpak
nixos-hardware.nixosModules.framework-16-7040-amd
disko.nixosModules.disko
agenix.nixosModules.default
];
# Networking
@ -11,113 +29,12 @@
hostId = "ed183b8f";
};
# Kernel
boot.kernelPackages = pkgs.linuxPackages_6_15;
# Boot
boot.loader.systemd-boot.enable = true;
boot.loader.systemd-boot.configurationLimit = 10;
# boot.loader.efi.canTouchEfiVariables = true;
# boot.kernelParams = [ "quiet" ];
boot.initrd.systemd = {
enable = true;
# network.enable = true;
};
# Reboot Timeout
systemd.extraConfig = ''
DefaultTimeoutStopSec=10s
'';
# Swap
zramSwap.enable = true;
# Wake Up issues
services.udev.extraRules =
''
ACTION=="add", SUBSYSTEM=="acpi", DRIVERS=="button", ATTRS{hid}=="PNP0C0D", ATTR{power/wakeup}="disabled"
ACTION=="add", SUBSYSTEM=="i2c", DRIVERS=="i2c_hid_acpi", ATTRS{name}=="PIXA3854:00", ATTR{power/wakeup}="disabled"
ACTION=="add", SUBSYSTEM=="usb", DRIVERS=="usb", ATTRS{idVendor}=="32ac", ATTRS{idProduct}=="0018", ATTR{power/wakeup}="disabled", ATTR{driver/1-1.1.1.4/power/wakeup}="disabled"
ACTION=="add", SUBSYSTEM=="usb", DRIVERS=="usb", ATTRS{idVendor}=="32ac", ATTRS{idProduct}=="0014", ATTR{power/wakeup}="disabled", ATTR{driver/1-1.1.1.4/power/wakeup}="disabled"
'';
# Optimisation
# nixpkgs.hostPlatform = {
# gcc.arch = "tigerlake";
# gcc.tune = "tigerlake";
# system = "x86_64-linux";
# };
# nix.settings.system-features = [ "gccarch-tigerlake" "nixos-test" "benchmark" "big-parallel" "kvm" ];
# # Increasing the limit of files to help with compilation
# security.pam.loginLimits = [{
# domain = "*";
# type = "soft";
# item = "nofile";
# value = "8192";
# }];
# # Resources Limit
# nix.settings = {
# max-jobs = 7;
# cores = 2;
# };
# # OOM configuration
# systemd = {
# # Create a separate slice for nix-daemon that is
# # memory-managed by the userspace systemd-oomd killer
# slices."nix-daemon".sliceConfig = {
# ManagedOOMMemoryPressure = "kill";
# ManagedOOMMemoryPressureLimit = "50%";
# };
# services."nix-daemon".serviceConfig.Slice = "nix-daemon.slice";
# # If a kernel-level OOM event does occur anyway,
# # strongly prefer killing nix-daemon child processes
# services."nix-daemon".serviceConfig.OOMScoreAdjust = 1000;
# services."nix-daemon".serviceConfig.MemoryHigh = "16G";
# services."nix-daemon".serviceConfig.MemoryMax = "20G";
# };
# Disabling failing test
nixpkgs.overlays = [ (final: prev: {
upower = prev.upower.overrideAttrs (_: { doCheck = false; });
gxml = prev.gxml.overrideAttrs (_: { doCheck = false; });
# # orc = prev.orc.overrideAttrs (_: { doCheck = false; });
# # gsl = prev.gsl.overrideAttrs (_: { doCheck = false; });
# fprintd = prev.fprintd.overrideAttrs (super: {
# # doCheck = false;
# # buildInputs = super.buildInputs or [ ] ++ (with pkgs; [ libpam-wrapper (pkgs.python3.withPackages (python-pkgs: [ python-pkgs.pycairo python-pkgs.dbus-python python-pkgs.python-dbusmock ])) ]);
# mesonCheckFlags = [
# # PAM related checks are timing out
# "--no-suite" "fprintd"
# ];
# });
# libsrtp = prev.libsrtp.overrideAttrs (_: {
# mesonFlags = [
# "-Dcrypto-library=openssl"
# "-Dcrypto-library-kdf=disabled"
# "-Ddoc=disabled"
# "-Dtests=disabled"
# ];
# });
# # # haskellPackages.crypton = pkgs.haskell.lib.overrideCabal prev.crypton (_: { doCheck = false; });
# # # haskellPackages.cryptonite = pkgs.haskell.lib.overrideCabal prev.cryptonite (_: { doCheck = false; });
}) ];
# nixpkgs.config.packageOverrides = pkgs: {
# haskellPackages = pkgs.haskellPackages.override {
# overrides = hsSelf: hsSuper: {
# crypton = pkgs.haskell.lib.overrideCabal hsSuper.crypton (_: { doCheck = false; });
# cryptonite = pkgs.haskell.lib.overrideCabal hsSuper.cryptonite (_: { doCheck = false; });
# crypton-x509-validation = pkgs.haskell.lib.overrideCabal hsSuper.crypton-x509-validation (oa: { doCheck = false; });
# tls = pkgs.haskell.lib.overrideCabal hsSuper.tls (oa: { doCheck = 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. Its 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 = "22.11"; # Did you read the comment?
home-manager.users.lyes.home.stateVersion = config.system.stateVersion;
}

113
hosts/lyes-pc/hardware.nix Normal file
View file

@ -0,0 +1,113 @@
{ pkgs, ... }:
{
# Kernel
boot.kernelPackages = pkgs.linuxPackages_6_15;
# Boot
boot.loader.systemd-boot.enable = true;
boot.loader.systemd-boot.configurationLimit = 10;
# boot.loader.efi.canTouchEfiVariables = true;
# boot.kernelParams = [ "quiet" ];
boot.initrd.systemd = {
enable = true;
# network.enable = true;
};
# Reboot Timeout
systemd.extraConfig = ''
DefaultTimeoutStopSec=10s
'';
# Swap
zramSwap.enable = true;
# Wake Up issues
services.udev.extraRules =
''
ACTION=="add", SUBSYSTEM=="acpi", DRIVERS=="button", ATTRS{hid}=="PNP0C0D", ATTR{power/wakeup}="disabled"
ACTION=="add", SUBSYSTEM=="i2c", DRIVERS=="i2c_hid_acpi", ATTRS{name}=="PIXA3854:00", ATTR{power/wakeup}="disabled"
ACTION=="add", SUBSYSTEM=="usb", DRIVERS=="usb", ATTRS{idVendor}=="32ac", ATTRS{idProduct}=="0018", ATTR{power/wakeup}="disabled", ATTR{driver/1-1.1.1.4/power/wakeup}="disabled"
ACTION=="add", SUBSYSTEM=="usb", DRIVERS=="usb", ATTRS{idVendor}=="32ac", ATTRS{idProduct}=="0014", ATTR{power/wakeup}="disabled", ATTR{driver/1-1.1.1.4/power/wakeup}="disabled"
'';
# Optimisation
# nixpkgs.hostPlatform = {
# gcc.arch = "tigerlake";
# gcc.tune = "tigerlake";
# system = "x86_64-linux";
# };
# nix.settings.system-features = [ "gccarch-tigerlake" "nixos-test" "benchmark" "big-parallel" "kvm" ];
# # Increasing the limit of files to help with compilation
# security.pam.loginLimits = [{
# domain = "*";
# type = "soft";
# item = "nofile";
# value = "8192";
# }];
# # Resources Limit
# nix.settings = {
# max-jobs = 7;
# cores = 2;
# };
# # OOM configuration
# systemd = {
# # Create a separate slice for nix-daemon that is
# # memory-managed by the userspace systemd-oomd killer
# slices."nix-daemon".sliceConfig = {
# ManagedOOMMemoryPressure = "kill";
# ManagedOOMMemoryPressureLimit = "50%";
# };
# services."nix-daemon".serviceConfig.Slice = "nix-daemon.slice";
# # If a kernel-level OOM event does occur anyway,
# # strongly prefer killing nix-daemon child processes
# services."nix-daemon".serviceConfig.OOMScoreAdjust = 1000;
# services."nix-daemon".serviceConfig.MemoryHigh = "16G";
# services."nix-daemon".serviceConfig.MemoryMax = "20G";
# };
# Disabling failing test
nixpkgs.overlays = [ (final: prev: {
upower = prev.upower.overrideAttrs (_: { doCheck = false; });
gxml = prev.gxml.overrideAttrs (_: { doCheck = false; });
# # orc = prev.orc.overrideAttrs (_: { doCheck = false; });
# # gsl = prev.gsl.overrideAttrs (_: { doCheck = false; });
# fprintd = prev.fprintd.overrideAttrs (super: {
# # doCheck = false;
# # buildInputs = super.buildInputs or [ ] ++ (with pkgs; [ libpam-wrapper (pkgs.python3.withPackages (python-pkgs: [ python-pkgs.pycairo python-pkgs.dbus-python python-pkgs.python-dbusmock ])) ]);
# mesonCheckFlags = [
# # PAM related checks are timing out
# "--no-suite" "fprintd"
# ];
# });
# libsrtp = prev.libsrtp.overrideAttrs (_: {
# mesonFlags = [
# "-Dcrypto-library=openssl"
# "-Dcrypto-library-kdf=disabled"
# "-Ddoc=disabled"
# "-Dtests=disabled"
# ];
# });
# # # haskellPackages.crypton = pkgs.haskell.lib.overrideCabal prev.crypton (_: { doCheck = false; });
# # # haskellPackages.cryptonite = pkgs.haskell.lib.overrideCabal prev.cryptonite (_: { doCheck = false; });
}) ];
# nixpkgs.config.packageOverrides = pkgs: {
# haskellPackages = pkgs.haskellPackages.override {
# overrides = hsSelf: hsSuper: {
# crypton = pkgs.haskell.lib.overrideCabal hsSuper.crypton (_: { doCheck = false; });
# cryptonite = pkgs.haskell.lib.overrideCabal hsSuper.cryptonite (_: { doCheck = false; });
# crypton-x509-validation = pkgs.haskell.lib.overrideCabal hsSuper.crypton-x509-validation (oa: { doCheck = false; });
# tls = pkgs.haskell.lib.overrideCabal hsSuper.tls (oa: { doCheck = false; });
# };
# };
# };
}

View file

@ -60,12 +60,4 @@
};
flake = "/home/lyes/Documents/nixos";
};
# 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. Its 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 = "22.11"; # Did you read the comment?
}

View file

@ -2,7 +2,8 @@
{
# Time
time.timeZone = "Europe/Paris";
# time.timeZone = "Europe/Paris";
time.timeZone = "Africa/Tunis";
# Locale
i18n.defaultLocale = "fr_FR.UTF-8";

View file

@ -1,8 +1,13 @@
{ ... }:
{ pkgs, ... }:
{
# Networking
networking.networkmanager.enable = true;
networking.networkmanager = {
enable = true;
plugins = with pkgs; [
networkmanager-openvpn
];
};
networking.nameservers = [
"9.9.9.9"
@ -30,6 +35,8 @@
'';
};
environment.systemPackages = with pkgs; [ wireguard-tools ];
# Captive portals
programs.captive-browser = {
enable = true;

View file

@ -48,18 +48,6 @@
xdg.portal.enable = true;
# Sound
# services.pulseaudio.enable = false;
services.pulseaudio.enable = false;
security.rtkit.enable = true;
services.pipewire = {
enable = true;
alsa.enable = true;
alsa.support32Bit = true;
pulse.enable = true;
#jack.enable = true;
};
# Virtualisation
virtualisation.libvirtd.enable = true;
# virtualisation.virtualbox.host.enable = true;

View file

@ -6,6 +6,13 @@
./packages.nix
];
home-manager.users.lyes = { ... }: {
imports =
[
./home.nix
];
};
# Keyboard
hardware.keyboard.qmk.enable = true;

View file

@ -0,0 +1,25 @@
{ ... }:
{
# Should activate that and translate things
# xdg.userDirs.enable = true;
services.mpd = {
enable = true;
musicDirectory = /home/lyes/Musique/MPD;
extraConfig =
''
audio_output {
type "pipewire"
name "PipeWire Sound Server"
}
audio_output {
type "fifo"
name "mpd"
path "~/.local/share/mpd/.mpd_fifo"
format "44100:16:2"
}
'';
};
}

View file

@ -36,7 +36,7 @@ in {
element-desktop
fractal
zoom-us
cinny-desktop
# cinny-desktop
# Image
gimp
@ -58,6 +58,7 @@ in {
# Audio
helvum
local.quadcastrgb
euphonica
# Games
heroic
@ -108,6 +109,9 @@ in {
haskellPackages.Agda
agdaPackages.standard-library
elan
coq
coqPackages.vscoq-language-server
coqPackages.HoTT
# Containers & VMs
toolbox