Compare commits

..

No commits in common. "4fed3712b00ba05d04320fd1b597ba12324a1014" and "b5b50630651a36f028d81d7bd68b2a35f5b5ec94" have entirely different histories.

14 changed files with 243 additions and 333 deletions

View File

@ -19,6 +19,7 @@
bluetooth.enable = true; bluetooth.enable = true;
power-saving.enable = false; power-saving.enable = false;
networkmanager.enable = true; networkmanager.enable = true;
# wpa_supplicant.enable = true;
}; };
# Hardware configuration # Hardware configuration

View File

@ -97,7 +97,6 @@ in
to = 11000; to = 11000;
} }
]; ];
security.rtkit.enable = true;
# TODO: Move to USB module # TODO: Move to USB module
# services.gvfs.enable = true; # services.gvfs.enable = true;

View File

@ -25,13 +25,12 @@ let
mkIf mkIf
(any ( (any (
user: user:
( (user.modules.${name}.enable
config.home-manager.users.${user}.modules.${name}.enable or (any (specialisation: specialisation.configuration.modules.${name}.enable) (
|| (any (specialisation: specialisation.configuration.modules.${name}.enable) ( attrValues user.modules.${name}.specialisations
attrValues config.home-manager.users.${user}.specialisation
)) ))
) )
) (attrNames config.home-manager.users)) ) (attrValues config.home-manager.users))
(if (isAttrs moduleConfig) then moduleConfig else (moduleConfig { inherit config pkgs; })); (if (isAttrs moduleConfig) then moduleConfig else (moduleConfig { inherit config pkgs; }));
}; };

View File

@ -9,8 +9,8 @@ rustPlatform.buildRustPackage {
domain = "git.bulthuis.dev"; domain = "git.bulthuis.dev";
owner = "Jan"; owner = "Jan";
repo = "nixgreety"; repo = "nixgreety";
rev = "c7278a910a0238a53f23fe9a0ae881802a4bcb31"; rev = "4b5f812e95f6359ce61aef685005dc4013f0fb5f";
hash = "sha256-kZB+iEFIDJ8pOJetu4Isu4oaktgIn14D4PcpDXLOXA8="; hash = "sha256-/eikqX/2byDi04v1XvsBVva1Vs7OGLl/cC/Vrq+QF9A=";
}; };
cargoHash = "sha256-pklKVzYoChRqPZ/D3BsMGnaBFd615TKbvoAy7iU8UtA="; cargoHash = "sha256-pklKVzYoChRqPZ/D3BsMGnaBFd615TKbvoAy7iU8UtA=";

View File

@ -14,6 +14,7 @@ in
# Import desktop environment modules # Import desktop environment modules
./bar/waybar.nix ./bar/waybar.nix
./lock-screen/waylock.nix ./lock-screen/waylock.nix
./window-manager/i3.nix
./window-manager/river.nix ./window-manager/river.nix
]; ];

View File

@ -0,0 +1,27 @@
{
config,
lib,
pkgs,
...
}:
let
cfg = config.modules.i3;
in
{
options.modules.i3.enable = lib.mkEnableOption "i3";
config = lib.mkIf cfg.enable {
# Set desktop type to x11
# modules.desktop.x11 = true;
modules.rofi.enable = true;
desktop.initScript = ''
i3
'';
xsession.windowManager.i3 = {
enable = true;
};
};
}

View File

@ -33,7 +33,7 @@ in
# Change desktop to execute river # Change desktop to execute river
desktop.initScript = '' desktop.initScript = ''
${pkgs.river}/bin/river ${pkgs.dbus}/bin/dbus-run-session ${pkgs.river}/bin/river
''; '';
desktop.session.type = "wayland"; desktop.session.type = "wayland";
@ -65,7 +65,7 @@ in
wayland.windowManager.river = { wayland.windowManager.river = {
enable = true; enable = true;
xwayland.enable = false; xwayland.enable = false;
systemd.enable = true; systemd.enable = false;
settings = settings =
let let
layout = "filtile"; layout = "filtile";
@ -120,9 +120,6 @@ in
# TODO: Generic background options # TODO: Generic background options
# "\"glpaper eDP-1 ${toString config.modules.glpaper.shader}\"" # "\"glpaper eDP-1 ${toString config.modules.glpaper.shader}\""
"udiskie" "udiskie"
# TODO: Should this be part of the keyring configuration directly?
# "\"gnome-keyring-daemon --replace --components=pkcs11,secrets,ssh\""
"wpaperd"
]; ];
map = ( map = (
lib.attrsets.recursiveUpdate lib.attrsets.recursiveUpdate

View File

@ -34,11 +34,9 @@ let
}; };
}; };
customBuilder = customBuilder = config: {
config: configuration = recursiveUpdate { desktop.name = config.name; } config.extraConfig;
recursiveUpdate { };
desktop.name = config.name;
} config.extraConfig;
# Environment builders # Environment builders
environmentBuilders = { environmentBuilders = {
@ -91,9 +89,9 @@ in
}; };
config = { config = {
specialisation = mapAttrs (name: value: { specialisation = mapAttrs (
configuration = (environmentBuilders."${value.type}" value); name: value: (environmentBuilders."${value.type}" value)
}) cfg.environments; ) cfg.environments;
# Create session files # Create session files
home.extraBuilderCommands = '' home.extraBuilderCommands = ''

View File

@ -5,4 +5,17 @@
river = { river = {
programs.river.enable = true; programs.river.enable = true;
}; };
i3 = {
services.xserver = {
layout = "us";
xkbVariant = "";
enable = true;
desktopManager = {
xterm.enable = true;
xfce = {
enable = true;
};
};
};
};
} }

View File

@ -1,119 +0,0 @@
{
config,
pkgs,
lib,
...
}:
with lib;
let
cfg = config.desktop.theming.background;
in
{
options.desktop.theming.background = {
path = mkOption {
type = types.str;
# default = "minimal/a_cat_in_a_cup.png";
default = "minimal/a_flower_on_a_dark_background.png";
description = "Path to the background image.";
};
themed = mkEnableOption "themed background";
invert = mkEnableOption "invert background";
src = mkOption {
default = pkgs.fetchFromGitHub {
owner = "dharmx";
repo = "walls";
rev = "6bf4d733ebf2b484a37c17d742eb47e5139e6a14";
sha256 = "sha256-M96jJy3L0a+VkJ+DcbtrRAquwDWaIG9hAUxenr/TcQU=";
};
};
};
config =
with pkgs;
let
theme = writeTextFile {
name = "gowall-theme";
text = builtins.toJSON {
name = "NixOS";
colors =
let
colors = config.desktop.theming.schemeColors;
in
[
"#${colors.base00}"
"#${colors.base01}"
"#${colors.base02}"
"#${colors.base03}"
"#${colors.base04}"
"#${colors.base05}"
"#${colors.base06}"
"#${colors.base07}"
"#${colors.base08}"
"#${colors.base09}"
"#${colors.base0A}"
"#${colors.base0B}"
"#${colors.base0C}"
"#${colors.base0D}"
"#${colors.base0E}"
"#${colors.base0F}"
];
};
executable = true;
};
background-themed = stdenv.mkDerivation {
name = "background-themed-1.0.0";
src = cfg.src;
buildInputs = [
gowall
imagemagick
(writeShellScriptBin "xdg-open" "")
];
buildPhase =
if cfg.themed then
if cfg.invert then
''
cp ${theme} ./theme.json
export HOME=$PWD
convert ./${cfg.path} -channel RGB -negate ./${cfg.path}
gowall convert ./${cfg.path} -o themed -t ./theme.json
mv Pictures/gowall/themed.* ./
mogrify -format png themed.*
''
else
''
cp ${theme} ./theme.json
export HOME=$PWD
gowall convert ./${cfg.path} -o themed -t ./theme.json
mv Pictures/gowall/themed.* ./
mogrify -format png themed.*
''
else
''
cp ${cfg.path} ./themed
mogrify -format png themed
'';
installPhase = ''
install -Dm644 -t $out themed.png
'';
};
in
{
programs.wpaperd = {
enable = true;
settings.default = {
path = "${background-themed}/";
mode = "center";
};
};
};
}

View File

@ -90,8 +90,6 @@ let
in in
{ {
imports = [ imports = [
./background.nix
# Import all themes # Import all themes
./themes/catppuccin.nix ./themes/catppuccin.nix
./themes/gruvbox.nix ./themes/gruvbox.nix

View File

@ -15,9 +15,9 @@ in
}; };
config = mkIf cfg.enable { config = mkIf cfg.enable {
# Development packages
home.packages = with pkgs; [ home.packages = with pkgs; [
seahorse seahorse
]; ];
services.gnome-keyring.enable = true;
}; };
} }

View File

@ -1,7 +1,7 @@
{ {
keyring = { keyring = {
services.gnome.gnome-keyring.enable = true; services.gnome.gnome-keyring = {
security.pam.services.greetd.enableGnomeKeyring = true; enable = true;
security.pam.services.login.enableGnomeKeyring = true; };
}; };
} }

View File

@ -23,10 +23,8 @@
freecad-wayland freecad-wayland
inkscape inkscape
ente-auth ente-auth
bitwarden
]; ];
# desktop.development = "river-light";
desktop.environments = { desktop.environments = {
river-dark = { river-dark = {
name = "River Dark"; name = "River Dark";
@ -59,12 +57,6 @@
}; };
# Color scheme # Color scheme
desktop.theming.background = {
# path = "unsorted/a_group_of_mountains_with_a_building_in_the_background.jpg";
path = "anime/a_colorful_buildings_with_power_lines.jpg";
themed = true;
invert = false;
};
desktop.theming.themes.catppuccin = { desktop.theming.themes.catppuccin = {
enable = true; enable = true;
flavor = "mocha"; flavor = "mocha";
@ -102,198 +94,186 @@
}; };
# Color scheme # Color scheme
desktop.theming.background = {
# path = "unsorted/a_group_of_mountains_with_a_building_in_the_background.jpg";
path = "anime/a_cartoon_of_a_street_with_buildings.jpeg";
themed = true;
invert = false;
};
desktop.theming.themes.catppuccin = { desktop.theming.themes.catppuccin = {
enable = true; enable = true;
flavor = lib.mkForce "latte"; flavor = lib.mkForce "latte";
}; };
}; };
}; };
# cosmic = { cosmic = {
# name = "Cosmic"; name = "Cosmic";
# type = "custom"; type = "custom";
# config = { }; config = { };
# extraConfig = { extraConfig = {
# desktop = { desktop = {
# initScript = '' initScript = ''
# ${pkgs.cosmic-session}/bin/cosmic-session ${pkgs.dbus}/bin/dbus-run-session ${pkgs.cosmic-session}/bin/cosmic-session
# ''; '';
# session = { session = {
# type = "wayland"; type = "wayland";
# desktop = "cosmic"; desktop = "cosmic";
# }; };
# }; };
# # TODO: Remove everything below, it is here out of convenience and should be elsewhere home.packages = with pkgs; [
# xdg.portal = { adwaita-icon-theme
# enable = true; alsa-utils
cosmic-applets
cosmic-applibrary
cosmic-bg
(cosmic-comp.override {
useXWayland = false;
})
cosmic-edit
cosmic-files
cosmic-greeter
cosmic-icons
cosmic-idle
cosmic-launcher
cosmic-notifications
cosmic-osd
cosmic-panel
cosmic-player
cosmic-randr
cosmic-screenshot
cosmic-session
cosmic-settings
cosmic-settings-daemon
cosmic-term
cosmic-wallpapers
cosmic-workspaces-epoch
hicolor-icon-theme
playerctl
pop-icon-theme
pop-launcher
xdg-user-dirs
xwayland
cosmic-store
# config.common.default = [ # Fonts
# "cosmic" fira
# "gtk" noto-fonts
# ]; open-sans
];
# extraPortals = with pkgs; [ xdg.portal = {
# xdg-desktop-portal-cosmic enable = true;
# xdg-desktop-portal-gtk extraPortals = with pkgs; [
# ]; xdg-desktop-portal-cosmic
xdg-desktop-portal-gtk
];
configPackages = lib.mkDefault (with pkgs; [ xdg-desktop-portal-cosmic ]);
};
# configPackages = lib.mkDefault (with pkgs; [ xdg-desktop-portal-cosmic ]); };
# }; };
# home.packages = with pkgs; [ gnome = {
# adwaita-icon-theme name = "Gnome";
# alsa-utils type = "custom";
# cosmic-applets config = { };
# cosmic-applibrary extraConfig = {
# cosmic-bg programs = {
# (cosmic-comp.override { gnome-shell.enable = true;
# useXWayland = false; };
# }) desktop = {
# cosmic-edit initScript = ''
# cosmic-files ${pkgs.dbus}/bin/dbus-run-session ${pkgs.gnome-session}/bin/gnome-session
# cosmic-greeter '';
# cosmic-icons session = {
# cosmic-idle type = "wayland";
# cosmic-launcher desktop = "GNOME";
# cosmic-notifications };
# cosmic-osd };
# cosmic-panel home.packages = [
# cosmic-player # Core utilities
# cosmic-randr pkgs.baobab
# cosmic-screenshot pkgs.epiphany
# cosmic-session pkgs.gnome-text-editor
# cosmic-settings pkgs.gnome-calculator
# cosmic-settings-daemon pkgs.gnome-calendar
# cosmic-term pkgs.gnome-characters
# cosmic-wallpapers pkgs.gnome-clocks
# cosmic-workspaces-epoch pkgs.gnome-console
# hicolor-icon-theme pkgs.gnome-contacts
# playerctl pkgs.gnome-font-viewer
# pop-icon-theme pkgs.gnome-logs
# pop-launcher pkgs.gnome-maps
# xdg-user-dirs pkgs.gnome-music
# xwayland pkgs.gnome-system-monitor
# cosmic-store pkgs.gnome-weather
pkgs.loupe
pkgs.nautilus
pkgs.gnome-connections
pkgs.simple-scan
pkgs.snapshot
pkgs.totem
pkgs.yelp
# # Fonts # Optional packages
# fira pkgs.adwaita-icon-theme
# noto-fonts pkgs.gnome-backgrounds
# open-sans pkgs.gnome-bluetooth
# ]; pkgs.gnome-color-manager
# }; pkgs.gnome-control-center
# }; pkgs.gnome-shell-extensions
# gnome = { pkgs.gnome-tour # GNOME Shell detects the .desktop file on first log-in.
# name = "Gnome"; pkgs.gnome-user-docs
# type = "custom"; pkgs.glib # for gsettings program
# config = { }; pkgs.gnome-menus
# extraConfig = { pkgs.gtk3.out # for gtk-launch program
# programs = { pkgs.xdg-user-dirs # Update user dirs as described in https://freedesktop.org/wiki/Software/xdg-user-dirs/
# gnome-shell.enable = true; pkgs.xdg-user-dirs-gtk # Used to create the default bookmarks
# };
# desktop = {
# initScript = ''
# ${pkgs.gnome-session}/bin/gnome-session
# '';
# session = {
# type = "wayland";
# desktop = "GNOME";
# };
# };
# # TODO: Remove everything below, it is here out of convenience and should be elsewhere # Games
# xdg.portal = { pkgs.aisleriot
# enable = true; pkgs.atomix
pkgs.five-or-more
pkgs.four-in-a-row
pkgs.gnome-2048
pkgs.gnome-chess
pkgs.gnome-klotski
pkgs.gnome-mahjongg
pkgs.gnome-mines
pkgs.gnome-nibbles
pkgs.gnome-robots
pkgs.gnome-sudoku
pkgs.gnome-taquin
pkgs.gnome-tetravex
pkgs.hitori
pkgs.iagno
pkgs.lightsoff
pkgs.quadrapassel
pkgs.swell-foop
pkgs.tali
# config.common.default = [ # Fonts
# "gnome" pkgs.cantarell-fonts
# "gtk" pkgs.dejavu_fonts
# ]; pkgs.source-code-pro # Default monospace font in 3.32
pkgs.source-sans
# extraPortals = with pkgs; [ # Other stuff
# xdg-desktop-portal-gnome pkgs.gnome-session
# xdg-desktop-portal-gtk # pkgs.gnome-session.sessions
# ]; ];
# }; };
# home.packages = [ };
# # Core utilities
# pkgs.baobab
# pkgs.epiphany
# pkgs.gnome-text-editor
# pkgs.gnome-calculator
# pkgs.gnome-calendar
# pkgs.gnome-characters
# pkgs.gnome-clocks
# pkgs.gnome-console
# pkgs.gnome-contacts
# pkgs.gnome-font-viewer
# pkgs.gnome-logs
# pkgs.gnome-maps
# pkgs.gnome-music
# pkgs.gnome-system-monitor
# pkgs.gnome-weather
# pkgs.loupe
# pkgs.nautilus
# pkgs.gnome-connections
# pkgs.simple-scan
# pkgs.snapshot
# pkgs.totem
# pkgs.yelp
# # Optional packages
# pkgs.adwaita-icon-theme
# pkgs.gnome-backgrounds
# pkgs.gnome-bluetooth
# pkgs.gnome-color-manager
# pkgs.gnome-control-center
# pkgs.gnome-shell-extensions
# pkgs.gnome-tour # GNOME Shell detects the .desktop file on first log-in.
# pkgs.gnome-user-docs
# pkgs.glib # for gsettings program
# pkgs.gnome-menus
# pkgs.gtk3.out # for gtk-launch program
# pkgs.xdg-user-dirs # Update user dirs as described in https://freedesktop.org/wiki/Software/xdg-user-dirs/
# pkgs.xdg-user-dirs-gtk # Used to create the default bookmarks
# # Games
# pkgs.aisleriot
# pkgs.atomix
# pkgs.five-or-more
# pkgs.four-in-a-row
# pkgs.gnome-2048
# pkgs.gnome-chess
# pkgs.gnome-klotski
# pkgs.gnome-mahjongg
# pkgs.gnome-mines
# pkgs.gnome-nibbles
# pkgs.gnome-robots
# pkgs.gnome-sudoku
# pkgs.gnome-taquin
# pkgs.gnome-tetravex
# pkgs.hitori
# pkgs.iagno
# pkgs.lightsoff
# pkgs.quadrapassel
# pkgs.swell-foop
# pkgs.tali
# # Fonts
# pkgs.cantarell-fonts
# pkgs.dejavu_fonts
# pkgs.source-code-pro # Default monospace font in 3.32
# pkgs.source-sans
# # Other stuff
# pkgs.gnome-session
# # pkgs.gnome-session.sessions
# ];
# };
# };
}; };
# Desktop environments
# desktop.environments =
# let
# in
# [
# {
# name = "river";
# type = "custom";
# config = { };
# extraConfig = {
# home.packages = with pkgs; [ cowsay ];
# };
# }
# ];
# Enabled modules # Enabled modules
modules = { modules = {
# Communication # Communication
@ -303,11 +283,11 @@
# Browser # Browser
firefox = { firefox = {
enable = true; enable = true;
default = false; default = true;
}; };
qutebrowser = { qutebrowser = {
enable = true; enable = true;
default = true; default = false;
}; };
# Gaming # Gaming
@ -385,5 +365,21 @@
flavor = "mocha"; flavor = "mocha";
}; };
}; };
# TODO: Remove everything below, it is here out of convenience and should be elsewhere
xdg.portal = {
enable = true;
config.common.default = [
"wlr"
"gtk"
];
extraPortals = with pkgs; [
xdg-desktop-portal-gtk
xdg-desktop-portal-wlr
];
};
}; };
} }