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": { "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": { "home-manager": {
"inputs": { "inputs": {
"nixpkgs": [ "nixpkgs": [
@ -21,6 +37,28 @@
"type": "github" "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": { "nixpkgs": {
"locked": { "locked": {
"lastModified": 1769598131, "lastModified": 1769598131,
@ -40,6 +78,7 @@
"root": { "root": {
"inputs": { "inputs": {
"home-manager": "home-manager", "home-manager": "home-manager",
"nixos-wsl": "nixos-wsl",
"nixpkgs": "nixpkgs" "nixpkgs": "nixpkgs"
} }
} }

View file

@ -5,34 +5,41 @@
nixpkgs.url = "github:nixos/nixpkgs/nixos-25.11"; nixpkgs.url = "github:nixos/nixpkgs/nixos-25.11";
home-manager.url = "github:nix-community/home-manager/release-25.11"; home-manager.url = "github:nix-community/home-manager/release-25.11";
home-manager.inputs.nixpkgs.follows = "nixpkgs"; home-manager.inputs.nixpkgs.follows = "nixpkgs";
nixos-wsl.url = "github:nix-community/NixOS-WSL/release-25.11";
nixos-wsl.inputs.nixpkgs.follows = "nixpkgs";
}; };
outputs = outputs =
{ nixpkgs, home-manager, ... }: { nixpkgs, home-manager, nixos-wsl, ... }@inputs:
let
home-manager-options = {
home-manager.useGlobalPkgs = true;
home-manager.useUserPackages = true;
home-manager.users.hms = ./home;
home-manager.backupFileExtension = "bak";
};
in
{ {
nixosConfigurations.selune = nixpkgs.lib.nixosSystem { nixosConfigurations.selune = nixpkgs.lib.nixosSystem {
system = "x86_64-linux"; system = "x86_64-linux";
specialArgs = { inherit inputs; };
modules = [ modules = [
./hosts/selune ./hosts/selune
home-manager.nixosModules.home-manager home-manager.nixosModules.home-manager
home-manager-options ./home
]; ];
}; };
nixosConfigurations.shar = nixpkgs.lib.nixosSystem { nixosConfigurations.shar = nixpkgs.lib.nixosSystem {
system = "x86_64-linux"; system = "x86_64-linux";
specialArgs = { inherit inputs; };
modules = [ modules = [
./hosts/shar ./hosts/shar
home-manager.nixosModules.home-manager 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, home-manager = {
# enableGraphical ? false, extraSpecialArgs = { inherit inputs; };
... useGlobalPkgs = true;
}: useUserPackages = true;
{ users."hms" = ./home.nix;
imports = [ backupFileExtension = "bak";
./cli.nix };
./graphical.nix
]
#++ (lib.optionals (enableGraphical) [ ./graphical.nix ])
;
} }

View file

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

View file

@ -5,6 +5,9 @@
./hardware-configuration.nix ./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 = boot.initrd.luks.devices."luks-324ce23c-e630-42a1-8558-184e999053a5".device =
"/dev/disk/by-uuid/324ce23c-e630-42a1-8558-184e999053a5"; "/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, ... }: { pkgs, ... }:
{ {
imports = [
./baremetal.nix
./wsl.nix
./graphical.nix
];
nix.settings.experimental-features = "nix-command flakes"; nix.settings.experimental-features = "nix-command flakes";
system.autoUpgrade.enable = true; system.autoUpgrade.enable = true;
@ -10,12 +16,6 @@
nix.gc.options = "--delete-older-than 10d"; nix.gc.options = "--delete-older-than 10d";
nix.settings.auto-optimise-store = true; 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"; time.timeZone = "Europe/Paris";
i18n.defaultLocale = "en_GB.UTF-8"; i18n.defaultLocale = "en_GB.UTF-8";
i18n.extraLocaleSettings = { i18n.extraLocaleSettings = {
@ -30,35 +30,10 @@
LC_TIME = "fr_FR.UTF-8"; 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 = { users.users.hms = {
isNormalUser = true; isNormalUser = true;
description = "hms"; description = "hms";
extraGroups = [ extraGroups = [ "wheel" ];
"networkmanager"
"wheel"
];
packages = [ ]; packages = [ ];
}; };
@ -69,6 +44,8 @@
wget wget
]; ];
services.openssh.enable = true;
programs.gnupg.agent = { programs.gnupg.agent = {
enable = true; enable = true;
enableSSHSupport = 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";
};
}