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;
power-saving.enable = false;
networkmanager.enable = true;
# wpa_supplicant.enable = true;
};
# Hardware configuration

View File

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

View File

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

View File

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

View File

@ -14,6 +14,7 @@ in
# Import desktop environment modules
./bar/waybar.nix
./lock-screen/waylock.nix
./window-manager/i3.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
desktop.initScript = ''
${pkgs.river}/bin/river
${pkgs.dbus}/bin/dbus-run-session ${pkgs.river}/bin/river
'';
desktop.session.type = "wayland";
@ -65,7 +65,7 @@ in
wayland.windowManager.river = {
enable = true;
xwayland.enable = false;
systemd.enable = true;
systemd.enable = false;
settings =
let
layout = "filtile";
@ -120,9 +120,6 @@ in
# TODO: Generic background options
# "\"glpaper eDP-1 ${toString config.modules.glpaper.shader}\""
"udiskie"
# TODO: Should this be part of the keyring configuration directly?
# "\"gnome-keyring-daemon --replace --components=pkcs11,secrets,ssh\""
"wpaperd"
];
map = (
lib.attrsets.recursiveUpdate

View File

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

View File

@ -5,4 +5,17 @@
river = {
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
{
imports = [
./background.nix
# Import all themes
./themes/catppuccin.nix
./themes/gruvbox.nix

View File

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

View File

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

View File

@ -23,10 +23,8 @@
freecad-wayland
inkscape
ente-auth
bitwarden
];
# desktop.development = "river-light";
desktop.environments = {
river-dark = {
name = "River Dark";
@ -59,12 +57,6 @@
};
# 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 = {
enable = true;
flavor = "mocha";
@ -102,198 +94,186 @@
};
# 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 = {
enable = true;
flavor = lib.mkForce "latte";
};
};
};
# cosmic = {
# name = "Cosmic";
# type = "custom";
# config = { };
# extraConfig = {
# desktop = {
# initScript = ''
# ${pkgs.cosmic-session}/bin/cosmic-session
# '';
# session = {
# type = "wayland";
# desktop = "cosmic";
# };
# };
# # TODO: Remove everything below, it is here out of convenience and should be elsewhere
# xdg.portal = {
# enable = true;
cosmic = {
name = "Cosmic";
type = "custom";
config = { };
extraConfig = {
desktop = {
initScript = ''
${pkgs.dbus}/bin/dbus-run-session ${pkgs.cosmic-session}/bin/cosmic-session
'';
session = {
type = "wayland";
desktop = "cosmic";
};
};
home.packages = with pkgs; [
adwaita-icon-theme
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 = [
# "cosmic"
# "gtk"
# ];
# Fonts
fira
noto-fonts
open-sans
];
# extraPortals = with pkgs; [
# xdg-desktop-portal-cosmic
# xdg-desktop-portal-gtk
# ];
xdg.portal = {
enable = true;
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; [
# adwaita-icon-theme
# 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
};
};
gnome = {
name = "Gnome";
type = "custom";
config = { };
extraConfig = {
programs = {
gnome-shell.enable = true;
};
desktop = {
initScript = ''
${pkgs.dbus}/bin/dbus-run-session ${pkgs.gnome-session}/bin/gnome-session
'';
session = {
type = "wayland";
desktop = "GNOME";
};
};
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
# # Fonts
# fira
# noto-fonts
# open-sans
# ];
# };
# };
# gnome = {
# name = "Gnome";
# type = "custom";
# config = { };
# extraConfig = {
# programs = {
# gnome-shell.enable = true;
# };
# desktop = {
# initScript = ''
# ${pkgs.gnome-session}/bin/gnome-session
# '';
# session = {
# type = "wayland";
# desktop = "GNOME";
# };
# };
# 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
# # TODO: Remove everything below, it is here out of convenience and should be elsewhere
# xdg.portal = {
# enable = true;
# 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
# config.common.default = [
# "gnome"
# "gtk"
# ];
# Fonts
pkgs.cantarell-fonts
pkgs.dejavu_fonts
pkgs.source-code-pro # Default monospace font in 3.32
pkgs.source-sans
# extraPortals = with pkgs; [
# xdg-desktop-portal-gnome
# xdg-desktop-portal-gtk
# ];
# };
# 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
# ];
# };
# };
# 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
modules = {
# Communication
@ -303,11 +283,11 @@
# Browser
firefox = {
enable = true;
default = false;
default = true;
};
qutebrowser = {
enable = true;
default = true;
default = false;
};
# Gaming
@ -385,5 +365,21 @@
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
];
};
};
}