feat (hosts/elistraee): add nixos-wsl config

This commit is contained in:
Henri Saudubray 2026-02-04 09:06:43 +00:00
parent d1c0846cf8
commit 7955b8220f
Signed by: hms
GPG key ID: 7065F57ED8856128
12 changed files with 243 additions and 143 deletions

39
flake.lock generated
View file

@ -1,5 +1,21 @@
{
"nodes": {
"flake-compat": {
"flake": false,
"locked": {
"lastModified": 1767039857,
"narHash": "sha256-vNpUSpF5Nuw8xvDLj2KCwwksIbjua2LZCqhV1LNRDns=",
"owner": "edolstra",
"repo": "flake-compat",
"rev": "5edf11c44bc78a0d334f6334cdaf7d60d732daab",
"type": "github"
},
"original": {
"owner": "edolstra",
"repo": "flake-compat",
"type": "github"
}
},
"home-manager": {
"inputs": {
"nixpkgs": [
@ -21,6 +37,28 @@
"type": "github"
}
},
"nixos-wsl": {
"inputs": {
"flake-compat": "flake-compat",
"nixpkgs": [
"nixpkgs"
]
},
"locked": {
"lastModified": 1768814707,
"narHash": "sha256-hiEtU10R8X8LuFCx0olNTaFGWV1CWF9aagd3wwfcKXE=",
"owner": "nix-community",
"repo": "NixOS-WSL",
"rev": "f80fde12cd9d5ff02b1c6eb612b853c1ac5ecc32",
"type": "github"
},
"original": {
"owner": "nix-community",
"ref": "release-25.11",
"repo": "NixOS-WSL",
"type": "github"
}
},
"nixpkgs": {
"locked": {
"lastModified": 1769598131,
@ -40,6 +78,7 @@
"root": {
"inputs": {
"home-manager": "home-manager",
"nixos-wsl": "nixos-wsl",
"nixpkgs": "nixpkgs"
}
}

View file

@ -5,34 +5,41 @@
nixpkgs.url = "github:nixos/nixpkgs/nixos-25.11";
home-manager.url = "github:nix-community/home-manager/release-25.11";
home-manager.inputs.nixpkgs.follows = "nixpkgs";
nixos-wsl.url = "github:nix-community/NixOS-WSL/release-25.11";
nixos-wsl.inputs.nixpkgs.follows = "nixpkgs";
};
outputs =
{ nixpkgs, home-manager, ... }:
let
home-manager-options = {
home-manager.useGlobalPkgs = true;
home-manager.useUserPackages = true;
home-manager.users.hms = ./home;
home-manager.backupFileExtension = "bak";
};
in
{ nixpkgs, home-manager, nixos-wsl, ... }@inputs:
{
nixosConfigurations.selune = nixpkgs.lib.nixosSystem {
system = "x86_64-linux";
specialArgs = { inherit inputs; };
modules = [
./hosts/selune
home-manager.nixosModules.home-manager
home-manager-options
./home
];
};
nixosConfigurations.shar = nixpkgs.lib.nixosSystem {
system = "x86_64-linux";
specialArgs = { inherit inputs; };
modules = [
./hosts/shar
home-manager.nixosModules.home-manager
home-manager-options
./home
];
};
nixosConfigurations.elistraee = nixpkgs.lib.nixosSystem {
system = "x86_64-linux";
specialArgs = { inherit inputs; };
modules = [
./hosts/elistraee
nixos-wsl.nixosModules.default
home-manager.nixosModules.home-manager
./home
];
};
homeManagerModules.default = ./home;
};
}

View file

@ -1,13 +1,10 @@
{ inputs, ... }:
{
lib,
# enableGraphical ? false,
...
}:
{
imports = [
./cli.nix
./graphical.nix
]
#++ (lib.optionals (enableGraphical) [ ./graphical.nix ])
;
home-manager = {
extraSpecialArgs = { inherit inputs; };
useGlobalPkgs = true;
useUserPackages = true;
users."hms" = ./home.nix;
backupFileExtension = "bak";
};
}

View file

@ -1,101 +1,103 @@
{ pkgs, ... }:
{ pkgs, lib, config, ... }:
{
home = {
packages =
with pkgs;
[
gnome-tweaks
protonmail-bridge-gui
adw-gtk3
nerd-fonts.adwaita-mono
blackbox-terminal
zotero
zulip
discord
signal-desktop
gapless
newsflash
gnome-solanum
]
++ (with gnomeExtensions; [
blur-my-shell
clipboard-indicator
rounded-window-corners-reborn
runcat
caffeine
launch-new-instance
light-style
]);
config = lib.mkIf config.graphical.enable {
home = {
packages =
with pkgs;
[
gnome-tweaks
protonmail-bridge-gui
adw-gtk3
nerd-fonts.adwaita-mono
blackbox-terminal
zotero
zulip
discord
signal-desktop
gapless
newsflash
gnome-solanum
]
++ (with gnomeExtensions; [
blur-my-shell
clipboard-indicator
rounded-window-corners-reborn
runcat
caffeine
launch-new-instance
light-style
]);
file."librewolf-gnome-theme" = {
target = ".librewolf/default/chrome/librewolf-gnome-theme";
source = fetchTarball {
url = "https://github.com/rafaelmardojai/firefox-gnome-theme/archive/v143.tar.gz";
sha256 = "1gkfi77n8cn5xzl3wi9mggh7adirjrsnbqygg1mcvjy0ynmd6kfh";
file."librewolf-gnome-theme" = {
target = ".librewolf/default/chrome/librewolf-gnome-theme";
source = fetchTarball {
url = "https://github.com/rafaelmardojai/firefox-gnome-theme/archive/v143.tar.gz";
sha256 = "1gkfi77n8cn5xzl3wi9mggh7adirjrsnbqygg1mcvjy0ynmd6kfh";
};
};
};
};
programs.librewolf = {
enable = true;
profiles.default = {
name = "Default";
settings = {
"toolkit.legacyUserProfileCustomizations.stylesheets" = true;
"svg.context-properties.content.enabled" = true;
"gnomeTheme.hideSingleTab" = true;
programs.librewolf = {
enable = true;
profiles.default = {
name = "Default";
settings = {
"toolkit.legacyUserProfileCustomizations.stylesheets" = true;
"svg.context-properties.content.enabled" = true;
"gnomeTheme.hideSingleTab" = true;
};
userChrome = ''
@import "librewolf-gnome-theme/userChrome.css";
@import "librewolf-gnome-theme/theme/colors/dark.css";
'';
};
userChrome = ''
@import "librewolf-gnome-theme/userChrome.css";
@import "librewolf-gnome-theme/theme/colors/dark.css";
'';
};
};
dconf.settings = {
"org/gnome/TextEditor".keybindings = "vim";
"org/gnome/shell" = {
disable-user-extensions = false;
enabled-extensions = [
"clipboard-indicator@tudmotu.com"
"rounded-window-corners@fxgn"
"runcat@kolesnikov.se"
"caffeine@patapon.info"
"launch-new-instance@gnome-shell-extensions.gcampax.github.com"
dconf.settings = {
"org/gnome/TextEditor".keybindings = "vim";
"org/gnome/shell" = {
disable-user-extensions = false;
enabled-extensions = [
"clipboard-indicator@tudmotu.com"
"rounded-window-corners@fxgn"
"runcat@kolesnikov.se"
"caffeine@patapon.info"
"launch-new-instance@gnome-shell-extensions.gcampax.github.com"
];
};
"org/gnome/desktop/interface" = {
gtk-theme = "adw-gtk3";
show-battery-percentage = true;
};
"org/gnome/desktop/wm/preferences".button-layout = "appmenu:minimize,maximize,close";
"org/gnome/desktop/wm/keybindings" = {
switch-applications = [ "<Alt>grave" ];
switch-applications-backwards = [ "<Shift><Alt>grave" ];
switch-windows = [ "<Alt>Tab" ];
switch-windows-backwards = [ "<Shift><Alt>Tab" ];
};
"org/gnome/settings-daemon/plugins/media-keys".custom-keybindings = [
"/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom0/"
"/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom1/"
];
};
"org/gnome/desktop/interface" = {
gtk-theme = "adw-gtk3";
show-battery-percentage = true;
};
"org/gnome/desktop/wm/preferences".button-layout = "appmenu:minimize,maximize,close";
"org/gnome/desktop/wm/keybindings" = {
switch-applications = [ "<Alt>grave" ];
switch-applications-backwards = [ "<Shift><Alt>grave" ];
switch-windows = [ "<Alt>Tab" ];
switch-windows-backwards = [ "<Shift><Alt>Tab" ];
};
"org/gnome/settings-daemon/plugins/media-keys".custom-keybindings = [
"/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom0/"
"/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom1/"
];
"org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom0" = {
name = "Terminal";
command = "blackbox";
binding = "<Super>Return";
};
"org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom1" = {
name = "Dark mode switcher";
command = "${pkgs.writeShellScript "gnome-dark-mode-switcher" ''
SCHEMA=org.gnome.desktop.interface
KEY=color-scheme
if [ "$(gsettings get "$SCHEMA" "$KEY")" = "'prefer-dark'" ]; then
gsettings set "$SCHEMA" "$KEY" "prefer-light";
else
gsettings set "$SCHEMA" "$KEY" "prefer-dark";
fi
''}";
binding = "<Super>d";
"org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom0" = {
name = "Terminal";
command = "blackbox";
binding = "<Super>Return";
};
"org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom1" = {
name = "Dark mode switcher";
command = "${pkgs.writeShellScript "gnome-dark-mode-switcher" ''
SCHEMA=org.gnome.desktop.interface
KEY=color-scheme
if [ "$(gsettings get "$SCHEMA" "$KEY")" = "'prefer-dark'" ]; then
gsettings set "$SCHEMA" "$KEY" "prefer-light";
else
gsettings set "$SCHEMA" "$KEY" "prefer-dark";
fi
''}";
binding = "<Super>d";
};
};
};
}

7
home/home.nix Normal file
View file

@ -0,0 +1,7 @@
{ ... }:
{
imports = [
./cli.nix
./graphical.nix
];
}

View file

@ -0,0 +1,11 @@
{ pkgs, ... }:
{
imports = [ ../../nixos ];
nixos-wsl.enable = true; # Enables wsl configuration (nixos/wsl.nix).
networking.hostName = "elistraee";
system.stateVersion = "25.05";
programs.gnupg.agent.pinentryPackage = pkgs.pinentry-tty;
}

View file

@ -5,6 +5,9 @@
./hardware-configuration.nix
];
baremetal.enable = true; # Enables baremetal features (nixos/baremetal.nix).
graphical.enable = true; # Enables graphical features (nixos/graphical.nix).
boot.initrd.luks.devices."luks-374c6259-18c4-462b-9f30-9c9648de00ae".device =
"/dev/disk/by-uuid/374c6259-18c4-462b-9f30-9c9648de00ae";

View file

@ -5,6 +5,9 @@
./hardware-configuration.nix
];
baremetal.enable = true; # Enables baremetal features (nixos/baremetal.nix).
graphical.enable = true; # Enables graphical features (nixos/graphical.nix).
boot.initrd.luks.devices."luks-324ce23c-e630-42a1-8558-184e999053a5".device =
"/dev/disk/by-uuid/324ce23c-e630-42a1-8558-184e999053a5";

27
nixos/baremetal.nix Normal file
View file

@ -0,0 +1,27 @@
{ pkgs, lib, config, ... }:
{
options = {
baremetal.enable = lib.mkEnableOption "enables bare metal features";
};
config = lib.mkIf config.baremetal.enable {
boot.loader.systemd-boot.enable = true;
boot.loader.efi.canTouchEfiVariables = true;
boot.kernelPackages = pkgs.linuxPackages_latest;
networking.networkmanager.enable = true;
users.users.hms.extraGroups = [ "networkmanager" ];
services.printing.enable = true;
services.pulseaudio.enable = false;
services.pipewire = {
enable = true;
alsa.enable = true;
alsa.support32Bit = true;
pulse.enable = true;
};
console.keyMap = "fr";
};
}

View file

@ -1,5 +1,11 @@
{ pkgs, ... }:
{
imports = [
./baremetal.nix
./wsl.nix
./graphical.nix
];
nix.settings.experimental-features = "nix-command flakes";
system.autoUpgrade.enable = true;
@ -10,12 +16,6 @@
nix.gc.options = "--delete-older-than 10d";
nix.settings.auto-optimise-store = true;
boot.loader.systemd-boot.enable = true;
boot.loader.efi.canTouchEfiVariables = true;
boot.kernelPackages = pkgs.linuxPackages_latest;
networking.networkmanager.enable = true;
time.timeZone = "Europe/Paris";
i18n.defaultLocale = "en_GB.UTF-8";
i18n.extraLocaleSettings = {
@ -30,35 +30,10 @@
LC_TIME = "fr_FR.UTF-8";
};
services.xserver.enable = true;
services.xserver.xkb.layout = "fr";
services.xserver.xkb.variant = "ergol";
services.displayManager.gdm.enable = true;
services.desktopManager.gnome.enable = true;
services.gnome.gnome-browser-connector.enable = true;
services.printing.enable = true;
services.pulseaudio.enable = false;
services.pipewire = {
enable = true;
alsa.enable = true;
alsa.support32Bit = true;
pulse.enable = true;
};
services.openssh.enable = true;
console.keyMap = "fr";
users.users.hms = {
isNormalUser = true;
description = "hms";
extraGroups = [
"networkmanager"
"wheel"
];
extraGroups = [ "wheel" ];
packages = [ ];
};
@ -69,6 +44,8 @@
wget
];
services.openssh.enable = true;
programs.gnupg.agent = {
enable = true;
enableSSHSupport = true;

16
nixos/graphical.nix Normal file
View file

@ -0,0 +1,16 @@
{ pkgs, lib, config, ... }:
{
options = {
graphical.enable = lib.mkEnableOption "enables graphical features";
};
config = lib.mkIf config.graphical.enable {
services.xserver.enable = true;
services.xserver.xkb.layout = "fr";
services.xserver.xkb.variant = "ergol";
services.displayManager.gdm.enable = true;
services.desktopManager.gnome.enable = true;
services.gnome.gnome-browser-connector.enable = true;
};
}

11
nixos/wsl.nix Normal file
View file

@ -0,0 +1,11 @@
{ pkgs, lib, config, ... }:
{
options = {
nixos-wsl.enable = lib.mkEnableOption "enables WSL support";
};
config = lib.mkIf config.nixos-wsl.enable {
wsl.enable = true;
wsl.defaultUser = "hms";
};
}