Replace riley
namespace with custom
namespace
This commit is contained in:
parent
071577b83d
commit
d7e64ff1d6
10 changed files with 197 additions and 88 deletions
|
@ -34,14 +34,23 @@
|
||||||
|
|
||||||
system.stateVersion = "21.11";
|
system.stateVersion = "21.11";
|
||||||
|
|
||||||
riley = {
|
# Custom modules defined by myself.
|
||||||
gui = false;
|
custom = {
|
||||||
|
|
||||||
|
gui.enable = false;
|
||||||
|
|
||||||
kak = {
|
kak = {
|
||||||
enable = true;
|
enable = true;
|
||||||
nix = true;
|
ide.nix = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
net.interfaces = [
|
||||||
|
"eth0"
|
||||||
|
];
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
users.users."riley" = {
|
users.users."riley" = {
|
||||||
isNormalUser = true;
|
isNormalUser = true;
|
||||||
extraGroups = [ "wheel" ];
|
extraGroups = [ "wheel" ];
|
||||||
|
|
|
@ -1,31 +1,34 @@
|
||||||
{ config, lib, pkgs, agenix, ... }:
|
{ config, lib, pkgs, agenix, ... }:
|
||||||
|
|
||||||
{
|
{
|
||||||
imports = [
|
imports = [
|
||||||
agenix.nixosModule
|
agenix.nixosModule
|
||||||
./hardware-configuration.nix
|
./hardware-configuration.nix
|
||||||
../../modules
|
../../modules
|
||||||
];
|
];
|
||||||
|
|
||||||
riley = {
|
custom = {
|
||||||
gui = true;
|
gui = {
|
||||||
kak = {
|
enable = true;
|
||||||
|
theme = (import ../../colors.nix).dark;
|
||||||
|
};
|
||||||
|
kak = {
|
||||||
|
|
||||||
enable = true;
|
enable = true;
|
||||||
|
|
||||||
haskell = true;
|
haskell = true;
|
||||||
rust = true;
|
rust = true;
|
||||||
nix = true;
|
nix = true;
|
||||||
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
system.stateVersion = "21.11";
|
system.stateVersion = "21.11";
|
||||||
|
|
||||||
networking = {
|
networking = {
|
||||||
hostName = "thor";
|
hostName = "thor";
|
||||||
interfaces.enp9s0.useDHCP = true;
|
interfaces.enp9s0.useDHCP = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
boot = {
|
boot = {
|
||||||
loader.systemd-boot = {
|
loader.systemd-boot = {
|
||||||
|
@ -39,10 +42,10 @@
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
users.users."riley".packages = with pkgs; [
|
users.users."riley".packages = with pkgs; [
|
||||||
minecraft
|
minecraft
|
||||||
cockatrice
|
cockatrice
|
||||||
];
|
];
|
||||||
|
|
||||||
programs.steam = {
|
programs.steam = {
|
||||||
enable = true;
|
enable = true;
|
||||||
|
@ -68,7 +71,7 @@
|
||||||
external = "alsa_output.pci-0000_0a_00.1.hdmi-stereo";
|
external = "alsa_output.pci-0000_0a_00.1.hdmi-stereo";
|
||||||
headset = null; # Thor doesn't have bluetooth support (yet)
|
headset = null; # Thor doesn't have bluetooth support (yet)
|
||||||
|
|
||||||
# Inputs
|
# Inputs
|
||||||
main-mic = "alsa_input.usb-046d_C922_Pro_Stream_Webcam_CC9E75BF-02.analog-stereo";
|
main-mic = "alsa_input.usb-046d_C922_Pro_Stream_Webcam_CC9E75BF-02.analog-stereo";
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
|
@ -1,17 +1,20 @@
|
||||||
{ config, lib, pkgs, ... }:
|
# This is a simple module that does not define its own options.
|
||||||
|
# Rather, it just looks at the `custom.gui.enable` option to
|
||||||
|
# determine if it needs to add anything.
|
||||||
|
|
||||||
let scripts = (import ../../scripts/clip.nix {
|
{ pkgs, lib, config, ... }:
|
||||||
|
|
||||||
|
let gui = config.custom.gui;
|
||||||
|
|
||||||
|
scripts = (import ../../scripts/clip.nix {
|
||||||
inherit pkgs;
|
inherit pkgs;
|
||||||
});
|
});
|
||||||
|
|
||||||
in (lib.mkIf (config.riley.gui) {
|
in lib.mkIf (gui.enable) {
|
||||||
|
|
||||||
# Add some shell scripts that abstract away the
|
# Add some shell scripts that abstract away the
|
||||||
# horrible reality that the clipboard is managed by
|
# horrible reality that the clipboard is managed by
|
||||||
# the display server.
|
# the display server.
|
||||||
users.users."riley".packages =
|
users.users."riley".packages = with scripts; [ c p ];
|
||||||
with scripts; [
|
|
||||||
c p
|
|
||||||
];
|
|
||||||
|
|
||||||
})
|
}
|
||||||
|
|
|
@ -1,4 +1,13 @@
|
||||||
{ pkgs, config, lib, ... }:
|
{ pkgs, lib, config, ... }:
|
||||||
|
|
||||||
|
let gui = config.custom.gui;
|
||||||
|
|
||||||
|
# Clipboard wrapper scripts
|
||||||
|
clip = (import ../../scripts/clip.nix {
|
||||||
|
inherit pkgs;
|
||||||
|
});
|
||||||
|
|
||||||
|
in
|
||||||
|
|
||||||
with lib; {
|
with lib; {
|
||||||
|
|
||||||
|
@ -7,21 +16,33 @@ with lib; {
|
||||||
./wm
|
./wm
|
||||||
|
|
||||||
./pulseaudio.nix
|
./pulseaudio.nix
|
||||||
./clipboard.nix
|
|
||||||
./statusbar.nix
|
./statusbar.nix
|
||||||
./terminal.nix
|
./terminal.nix
|
||||||
|
|
||||||
|
./theme.nix
|
||||||
|
|
||||||
];
|
];
|
||||||
|
|
||||||
options.riley.gui = mkEnableOption "gui applications and window manager";
|
options.custom.gui = {
|
||||||
|
|
||||||
config = mkIf config.riley.gui {
|
# Use a nested enable option, to allow extension of this option
|
||||||
|
# namespace later on.
|
||||||
|
enable = mkEnableOption "gui applications and window manager";
|
||||||
|
|
||||||
# Graphical applications
|
};
|
||||||
users.users."riley".packages = with pkgs; [
|
|
||||||
|
config = mkIf (gui.enable) {
|
||||||
|
|
||||||
|
# Import some applications I use on all my graphical systems
|
||||||
|
users.users."riley".packages = (with pkgs; [
|
||||||
|
|
||||||
|
# My browser
|
||||||
google-chrome
|
google-chrome
|
||||||
|
|
||||||
|
# Telegram client
|
||||||
tdesktop
|
tdesktop
|
||||||
];
|
|
||||||
|
]) ++ (with clip; [ c p ]); # Add clipboard scripts
|
||||||
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,10 +1,21 @@
|
||||||
{ lib, config, pkgs, ... }:
|
{ pkgs, lib, config, ... }:
|
||||||
|
|
||||||
(lib.mkIf (config.riley.gui) {
|
let gui = config.custom.gui; in
|
||||||
sound.enable = true;
|
|
||||||
hardware.pulseaudio.enable = true;
|
|
||||||
|
|
||||||
users.users."riley".packages = with pkgs; [
|
with lib; {
|
||||||
pavucontrol
|
|
||||||
];
|
# Define pulseaudio toggle under the `audio` option set.
|
||||||
})
|
options.custom.gui.audio.pulseaudio = mkEnableOption "PulseAudio sound server";
|
||||||
|
|
||||||
|
config = mkIf (gui.audio.pulseaudio) {
|
||||||
|
|
||||||
|
sound.enable = true;
|
||||||
|
hardware.pulseaudio.enable = true;
|
||||||
|
|
||||||
|
users.users."riley".packages = with pkgs; [
|
||||||
|
pavucontrol
|
||||||
|
];
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
}
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
{ pkgs, config, lib, ... }:
|
{ pkgs, config, lib, ... }:
|
||||||
|
|
||||||
(lib.mkIf (config.riley.gui && false) {
|
(lib.mkIf (config.custom.gui.enable && false) {
|
||||||
home-manager.users."riley" = {
|
home-manager.users."riley" = {
|
||||||
services.polybar = {
|
services.polybar = {
|
||||||
enable = true;
|
enable = true;
|
||||||
|
|
|
@ -1,44 +1,48 @@
|
||||||
|
# Module that adds my terminal emulator of choice to my environment.
|
||||||
|
|
||||||
{ pkgs, lib, config, ... }:
|
{ pkgs, lib, config, ... }:
|
||||||
|
|
||||||
with lib; (mkIf config.riley.gui {
|
let gui = config.custom.gui; in
|
||||||
home-manager.users."riley" = {
|
|
||||||
|
|
||||||
# Kitty lets me use cool ligatures
|
with lib; mkIf (gui.enable) {
|
||||||
programs.kitty = {
|
|
||||||
enable = true;
|
|
||||||
|
|
||||||
font = {
|
home-manager.users."riley".programs.kitty = {
|
||||||
name = "Fira Code";
|
|
||||||
size = 11;
|
|
||||||
};
|
|
||||||
|
|
||||||
settings = with config.riley.theme.hex; {
|
# Use kitty because it supports cool ligatures and
|
||||||
|
# has nice scripting capabilities.
|
||||||
|
enable = true;
|
||||||
|
|
||||||
bold_font = "Fira Code Medium";
|
font = {
|
||||||
|
name = "Fira Code";
|
||||||
|
size = 11;
|
||||||
|
};
|
||||||
|
|
||||||
background = background.primary;
|
settings = with gui.theme.hex; {
|
||||||
foreground = foreground.primary;
|
|
||||||
|
|
||||||
color1 = red.normal;
|
bold_font = "Fira Code Medium";
|
||||||
color9 = red.bright;
|
|
||||||
|
|
||||||
color2 = green.normal;
|
background = background.primary;
|
||||||
color10 = green.bright;
|
foreground = foreground.primary;
|
||||||
|
|
||||||
color3 = yellow.normal;
|
color1 = red.normal;
|
||||||
color11 = yellow.bright;
|
color9 = red.bright;
|
||||||
|
|
||||||
color4 = blue.normal;
|
color2 = green.normal;
|
||||||
color12 = blue.bright;
|
color10 = green.bright;
|
||||||
|
|
||||||
color5 = purple.normal;
|
color3 = yellow.normal;
|
||||||
color13 = purple.bright;
|
color11 = yellow.bright;
|
||||||
|
|
||||||
color6 = cyan.normal;
|
color4 = blue.normal;
|
||||||
color14 = cyan.bright;
|
color12 = blue.bright;
|
||||||
|
|
||||||
};
|
color5 = purple.normal;
|
||||||
};
|
color13 = purple.bright;
|
||||||
|
|
||||||
|
color6 = cyan.normal;
|
||||||
|
color14 = cyan.bright;
|
||||||
|
|
||||||
|
};
|
||||||
};
|
};
|
||||||
})
|
|
||||||
|
}
|
||||||
|
|
58
modules/gui/theme.nix
Normal file
58
modules/gui/theme.nix
Normal file
|
@ -0,0 +1,58 @@
|
||||||
|
# Defines the global color theme option.
|
||||||
|
|
||||||
|
{ lib, ... }:
|
||||||
|
|
||||||
|
with lib; with types;
|
||||||
|
|
||||||
|
# Define the type in a let binding to prevent too much rightward
|
||||||
|
# drift in the option configuration.
|
||||||
|
let themeType =
|
||||||
|
|
||||||
|
let # Named colors are colors like "red" or "black".
|
||||||
|
named = submodule {
|
||||||
|
options = {
|
||||||
|
normal = mkOption { type = str; };
|
||||||
|
bright = mkOption { type = str; };
|
||||||
|
pastel = mkOption { type = str; };
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
# Special colors are more abstract, for example
|
||||||
|
# "foreground".
|
||||||
|
special = submodule {
|
||||||
|
options = {
|
||||||
|
primary = mkOption { type = str; };
|
||||||
|
normal = mkOption { type = str; };
|
||||||
|
slight = mkOption { type = str; };
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
in submodule {
|
||||||
|
options = {
|
||||||
|
foreground = mkOption { type = special; };
|
||||||
|
background = mkOption { type = special; };
|
||||||
|
grayscales = mkOption { type = listOf str; };
|
||||||
|
red = mkOption { type = named; };
|
||||||
|
green = mkOption { type = named; };
|
||||||
|
blue = mkOption { type = named; };
|
||||||
|
yellow = mkOption { type = named; };
|
||||||
|
purple = mkOption { type = named; };
|
||||||
|
cyan = mkOption { type = named; };
|
||||||
|
pink = mkOption { type = named; };
|
||||||
|
orange = mkOption { type = named; };
|
||||||
|
misc = mkOption { type = attrsOf str; };
|
||||||
|
hex = mkOption { type = themeType; };
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
in {
|
||||||
|
|
||||||
|
options.custom.gui.theme = mkOption {
|
||||||
|
type = themeType;
|
||||||
|
description = ''
|
||||||
|
Color theme used across the installation for various
|
||||||
|
GUI elements and terminal colors.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
}
|
|
@ -32,7 +32,7 @@ let scripts = (import ./scripts.nix { inherit pkgs; });
|
||||||
});
|
});
|
||||||
in
|
in
|
||||||
|
|
||||||
with lib; (mkIf config.riley.gui {
|
with lib; (mkIf config.custom.gui.enable {
|
||||||
|
|
||||||
services.xserver = {
|
services.xserver = {
|
||||||
enable = true;
|
enable = true;
|
||||||
|
|
|
@ -2,8 +2,8 @@
|
||||||
|
|
||||||
with pkgs.kakouneUtils;
|
with pkgs.kakouneUtils;
|
||||||
|
|
||||||
let cfg = config.riley.kak;
|
let cfg = config.custom.kak;
|
||||||
theme = config.riley.theme;
|
theme = config.custom.gui.theme;
|
||||||
kak-crosshairs = buildKakounePlugin (rec {
|
kak-crosshairs = buildKakounePlugin (rec {
|
||||||
name = "kak-crosshairs";
|
name = "kak-crosshairs";
|
||||||
src = (pkgs.fetchFromGitHub {
|
src = (pkgs.fetchFromGitHub {
|
||||||
|
@ -17,7 +17,7 @@ in
|
||||||
|
|
||||||
with lib; {
|
with lib; {
|
||||||
|
|
||||||
options.riley.kak = {
|
options.custom.kak = {
|
||||||
|
|
||||||
enable = (mkEnableOption "kakoune editor") // { default = true; };
|
enable = (mkEnableOption "kakoune editor") // { default = true; };
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue