modularize desktop components
This commit is contained in:
parent
d3da8ba3ac
commit
e0176ec2d9
@ -1,6 +1,7 @@
|
||||
{ config, pkgs, ... }:
|
||||
|
||||
{
|
||||
|
||||
# Home Manager needs a bit of information about you and the paths it should
|
||||
# manage.
|
||||
home.username = "jonas";
|
||||
@ -17,31 +18,16 @@
|
||||
|
||||
# The home.packages option allows you to install Nix packages into your
|
||||
# environment.
|
||||
home.packages = [
|
||||
# # Adds the 'hello' command to your environment. It prints a friendly
|
||||
# # "Hello, world!" when run.
|
||||
# pkgs.hello
|
||||
|
||||
# # It is sometimes useful to fine-tune packages, for example, by applying
|
||||
# # overrides. You can do that directly here, just don't forget the
|
||||
# # parentheses. Maybe you want to install Nerd Fonts with a limited number of
|
||||
# # fonts?
|
||||
# (pkgs.nerdfonts.override { fonts = [ "FantasqueSansMono" ]; })
|
||||
|
||||
# # You can also create simple shell scripts directly inside your
|
||||
# # configuration. For example, this adds a command 'my-hello' to your
|
||||
# # environment:
|
||||
# (pkgs.writeShellScriptBin "my-hello" ''
|
||||
# echo "Hello, ${config.home.username}!"
|
||||
# '')
|
||||
pkgs.chromium
|
||||
pkgs.firefox
|
||||
pkgs.fzf
|
||||
pkgs.nil
|
||||
pkgs.nixpkgs-fmt
|
||||
pkgs.poetry
|
||||
pkgs.thefuck
|
||||
pkgs.vscode
|
||||
home.packages = with pkgs; [
|
||||
chromium
|
||||
firefox
|
||||
fzf
|
||||
nil
|
||||
nixpkgs-fmt
|
||||
poetry
|
||||
thefuck
|
||||
vim
|
||||
vscode
|
||||
];
|
||||
|
||||
# Home Manager is pretty good at managing dotfiles. The primary way to manage
|
||||
@ -75,7 +61,7 @@
|
||||
# /etc/profiles/per-user/jonas/etc/profile.d/hm-session-vars.sh
|
||||
#
|
||||
home.sessionVariables = {
|
||||
# EDITOR = "emacs";
|
||||
EDITOR = "vim";
|
||||
};
|
||||
|
||||
# Let Home Manager install and manage itself.
|
||||
@ -117,4 +103,11 @@
|
||||
theme = "bureau";
|
||||
};
|
||||
};
|
||||
|
||||
# wayland.windowManager.hyprland = {
|
||||
# enable = true;
|
||||
# settings = {
|
||||
# "$mod" = "SUPER";
|
||||
# };
|
||||
# };
|
||||
}
|
||||
|
||||
@ -16,7 +16,6 @@
|
||||
../../modules/hardware/bluetooth.nix
|
||||
../../modules/hardware/printing.nix
|
||||
../../modules/hardware/sound.nix
|
||||
../../modules/desktop/x11-plasma.nix
|
||||
../../modules/services/docker.nix
|
||||
];
|
||||
|
||||
@ -29,7 +28,7 @@
|
||||
users.users.jonas = {
|
||||
isNormalUser = true;
|
||||
description = "Jonas";
|
||||
extraGroups = [ "networkmanager" "wheel" ];
|
||||
extraGroups = [ "networkmanager" "wheel" "docker"];
|
||||
packages = with pkgs; [ ];
|
||||
};
|
||||
users.defaultUserShell = pkgs.zsh;
|
||||
|
||||
@ -2,7 +2,7 @@
|
||||
# your system. Help is available in the configuration.nix(5) man page
|
||||
# and in the NixOS manual (accessible by running ‘nixos-help’).
|
||||
|
||||
{ config, pkgs, inputs, ... }:
|
||||
{ pkgs, inputs, ... }:
|
||||
|
||||
{
|
||||
imports =
|
||||
@ -16,11 +16,15 @@
|
||||
../../modules/hardware/bluetooth.nix
|
||||
../../modules/hardware/printing.nix
|
||||
../../modules/hardware/sound.nix
|
||||
../../modules/desktop/hyprland.nix
|
||||
../../modules/services/docker.nix
|
||||
../../modules/desktop/dm
|
||||
../../modules/desktop/de
|
||||
];
|
||||
|
||||
nix.settings.experimental-features = [ "nix-command" "flakes" ];
|
||||
desktop.dm.name = "sddm";
|
||||
desktop.dm.autologin = "jonas";
|
||||
desktop.de.plasma.enable = true;
|
||||
|
||||
|
||||
# Enable touchpad support (enabled default in most desktopManager).
|
||||
# services.xserver.libinput.enable = true;
|
||||
@ -29,7 +33,7 @@
|
||||
users.users.jonas = {
|
||||
isNormalUser = true;
|
||||
description = "Jonas";
|
||||
extraGroups = [ "networkmanager" "wheel" ];
|
||||
extraGroups = [ "networkmanager" "wheel" "docker"];
|
||||
packages = with pkgs; [ ];
|
||||
};
|
||||
users.defaultUserShell = pkgs.zsh;
|
||||
|
||||
@ -6,18 +6,18 @@
|
||||
{
|
||||
imports = [ ];
|
||||
|
||||
boot.initrd.availableKernelModules = [ "sd_mod" "sr_mod" ];
|
||||
boot.initrd.availableKernelModules = [ "ata_piix" "ohci_pci" "ehci_pci" "ahci" "sd_mod" "sr_mod" ];
|
||||
boot.initrd.kernelModules = [ ];
|
||||
boot.kernelModules = [ ];
|
||||
boot.extraModulePackages = [ ];
|
||||
|
||||
fileSystems."/" =
|
||||
{ device = "/dev/disk/by-uuid/0bbdc54a-243c-4b40-8566-c12adff1417a";
|
||||
{ device = "/dev/disk/by-uuid/a28cd2c0-67f3-4492-9cd9-996fdbe2b8ef";
|
||||
fsType = "ext4";
|
||||
};
|
||||
|
||||
fileSystems."/boot" =
|
||||
{ device = "/dev/disk/by-uuid/5DE9-BA20";
|
||||
{ device = "/dev/disk/by-uuid/0134-2DF5";
|
||||
fsType = "vfat";
|
||||
};
|
||||
|
||||
@ -28,8 +28,8 @@
|
||||
# still possible to use this option, but it's recommended to use it in conjunction
|
||||
# with explicit per-interface declarations with `networking.interfaces.<interface>.useDHCP`.
|
||||
networking.useDHCP = lib.mkDefault true;
|
||||
# networking.interfaces.eth0.useDHCP = lib.mkDefault true;
|
||||
# networking.interfaces.enp0s3.useDHCP = lib.mkDefault true;
|
||||
|
||||
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
|
||||
virtualisation.hypervGuest.enable = true;
|
||||
virtualisation.virtualbox.guest.enable = true;
|
||||
}
|
||||
|
||||
8
modules/desktop/de/default.nix
Normal file
8
modules/desktop/de/default.nix
Normal file
@ -0,0 +1,8 @@
|
||||
{ ... }:
|
||||
|
||||
{
|
||||
imports = [
|
||||
./hyprland.nix
|
||||
./plasma.nix
|
||||
];
|
||||
}
|
||||
22
modules/desktop/de/hyprland.nix
Normal file
22
modules/desktop/de/hyprland.nix
Normal file
@ -0,0 +1,22 @@
|
||||
{ lib, config, ... }:
|
||||
|
||||
let
|
||||
cfg = config.desktop.de.hyprland;
|
||||
in
|
||||
{
|
||||
options.desktop.de.hyprland = {
|
||||
enable = lib.mkEnableOption "enable hyprland desktop environment";
|
||||
};
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
services = {
|
||||
xserver.libinput.enable = true;
|
||||
dbus.enable = true;
|
||||
};
|
||||
|
||||
programs.hyprland = {
|
||||
enable = true;
|
||||
xwayland.enable = true;
|
||||
};
|
||||
};
|
||||
}
|
||||
14
modules/desktop/de/plasma.nix
Normal file
14
modules/desktop/de/plasma.nix
Normal file
@ -0,0 +1,14 @@
|
||||
{ config, lib, ... }:
|
||||
|
||||
let
|
||||
cfg = config.desktop.de.plasma;
|
||||
in
|
||||
{
|
||||
options.desktop.de.plasma = {
|
||||
enable = lib.mkEnableOption "Enable Plasma desktop environment with sddm";
|
||||
};
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
services.xserver.desktopManager.plasma5.enable = true;
|
||||
};
|
||||
}
|
||||
39
modules/desktop/dm/default.nix
Normal file
39
modules/desktop/dm/default.nix
Normal file
@ -0,0 +1,39 @@
|
||||
{ config, lib, ... }:
|
||||
|
||||
let
|
||||
cfg = config.desktop.dm;
|
||||
in
|
||||
{
|
||||
options.desktop.dm = with lib; {
|
||||
name = mkOption {
|
||||
type = types.nullOr (types.enum ["sddm" "gdm"]);
|
||||
default = null;
|
||||
description = "The display manager to use.";
|
||||
};
|
||||
autologin = mkOption {
|
||||
type = types.nullOr types.str;
|
||||
default = null;
|
||||
description = "The autologin username or null for no autologin.";
|
||||
};
|
||||
wayland = mkOption {
|
||||
type = types.bool;
|
||||
default = false;
|
||||
description = "Enable wayland";
|
||||
};
|
||||
};
|
||||
|
||||
imports = [
|
||||
./gdm.nix
|
||||
./sddm.nix
|
||||
];
|
||||
|
||||
config = {
|
||||
services.xserver.enable = true;
|
||||
services.xserver = {
|
||||
layout = "de";
|
||||
xkbVariant = "";
|
||||
};
|
||||
services.xserver.displayManager.autoLogin.enable = (cfg.autologin != null);
|
||||
services.xserver.displayManager.autoLogin.user = cfg.autologin;
|
||||
};
|
||||
}
|
||||
12
modules/desktop/dm/gdm.nix
Normal file
12
modules/desktop/dm/gdm.nix
Normal file
@ -0,0 +1,12 @@
|
||||
{ lib, config, ... }:
|
||||
let
|
||||
cfg = config.desktop.dm;
|
||||
in
|
||||
{
|
||||
config = lib.mkIf (cfg.name == "gdm") {
|
||||
services.xserver.displayManager.gdm = {
|
||||
enable = true;
|
||||
wayland = cfg.wayland;
|
||||
};
|
||||
};
|
||||
}
|
||||
13
modules/desktop/dm/sddm.nix
Normal file
13
modules/desktop/dm/sddm.nix
Normal file
@ -0,0 +1,13 @@
|
||||
{ lib, config, ... }:
|
||||
|
||||
let
|
||||
cfg = config.desktop.dm;
|
||||
in
|
||||
{
|
||||
config = lib.mkIf (cfg.name == "sddm") {
|
||||
services.xserver.displayManager.sddm = {
|
||||
enable = true;
|
||||
wayland.enable = cfg.wayland;
|
||||
};
|
||||
};
|
||||
}
|
||||
@ -1,8 +0,0 @@
|
||||
{ config, pkgs, ... }:
|
||||
|
||||
{
|
||||
programs.hyprland = {
|
||||
enable = true;
|
||||
xwayland.enable = true;
|
||||
};
|
||||
}
|
||||
@ -1,29 +0,0 @@
|
||||
{ config, pkgs, ... }:
|
||||
|
||||
{
|
||||
# Import unstable plasma6 module
|
||||
imports = [
|
||||
"${nixpkgs-unstable}/nixos/modules/services/desktop-managers/plasma6.nix"
|
||||
];
|
||||
disable = [
|
||||
"services/desktop-managers/plasma6.nix"
|
||||
];
|
||||
|
||||
# Enable the X11 windowing system.
|
||||
services.xserver.enable = true;
|
||||
|
||||
# Configure keymap in X11
|
||||
services.xserver = {
|
||||
layout = "de";
|
||||
xkbVariant = "";
|
||||
};
|
||||
|
||||
# Enable the KDE Plasma Desktop Environment.
|
||||
services.xserver.displayManager.sddm.wayland.enable = true;
|
||||
services.desktopManager.plasma6.enable = true;
|
||||
|
||||
# Enable automatic login for the user.
|
||||
services.xserver.displayManager.autoLogin.enable = true;
|
||||
services.xserver.displayManager.autoLogin.user = "jonas";
|
||||
|
||||
}
|
||||
@ -1,21 +0,0 @@
|
||||
{ config, ... }:
|
||||
|
||||
{
|
||||
# Enable the X11 windowing system.
|
||||
services.xserver.enable = true;
|
||||
|
||||
# Configure keymap in X11
|
||||
services.xserver = {
|
||||
layout = "de";
|
||||
xkbVariant = "";
|
||||
};
|
||||
|
||||
# Enable the KDE Plasma Desktop Environment.
|
||||
services.xserver.displayManager.sddm.enable = true;
|
||||
services.xserver.desktopManager.plasma5.enable = true;
|
||||
|
||||
# Enable automatic login for the user.
|
||||
services.xserver.displayManager.autoLogin.enable = true;
|
||||
services.xserver.displayManager.autoLogin.user = "jonas";
|
||||
|
||||
}
|
||||
@ -2,5 +2,4 @@
|
||||
|
||||
{
|
||||
virtualisation.docker.enable = true;
|
||||
users.users.jonas.extraGroups = [ "docker" ];
|
||||
}
|
||||
Loading…
x
Reference in New Issue
Block a user