Compare commits

...

6 commits

Author SHA1 Message Date
f48d94c58f
chore(home): Add todo 2024-11-16 21:33:38 -08:00
84d6ccf9b2
feat(home): Temporary - install Nix tools
Will be moved to a devshell asap. Just want to be sure it builds first.
2024-11-16 21:32:37 -08:00
63533f0478
chore: Remove unneeded files 2024-11-16 21:32:07 -08:00
8da17cb0d5
feat(home): Syncthing 2024-11-16 21:29:25 -08:00
a2f9247f5d
feat(home): Dunst 2024-11-16 21:26:35 -08:00
1eae8c3ebb
feat(home): Clipboard 2024-11-16 21:18:54 -08:00
11 changed files with 202 additions and 205 deletions

View file

@ -1,4 +1,9 @@
{ lib, namespace, ... }: {
lib,
namespace,
pkgs,
...
}:
let let
inherit (lib.${namespace}) enabled; inherit (lib.${namespace}) enabled;
in in
@ -7,6 +12,14 @@ in
targets.genericLinux = enabled; targets.genericLinux = enabled;
# TODO: Move this to a dev shell
home.packages = with pkgs; [
nixfmt-rfc-style
nil
statix
manix
];
${namespace} = { ${namespace} = {
isDesktop = true; isDesktop = true;
@ -50,6 +63,12 @@ in
zathura = enabled; zathura = enabled;
zoxide = enabled; zoxide = enabled;
}; };
services = {
clipboard = enabled;
# TODO: bundle this with the WM under xorg
dunst = enabled;
syncthing = enabled;
};
xorg = { xorg = {
xsession = enabled; xsession = enabled;
}; };

View file

@ -30,6 +30,8 @@ in
unrar-free unrar-free
]; ];
# TODO: Set the greeting to `figlet -f Elite marleyOS`
programs.fish = { programs.fish = {
enable = true; enable = true;

View file

@ -0,0 +1,26 @@
{
lib,
config,
namespace,
pkgs,
...
}:
let
inherit (lib) mkIf;
inherit (lib.${namespace}) mkEnableModule;
cfg = config.${namespace}.services.clipboard;
in
{
options = mkEnableModule "services.clipboard";
config = mkIf cfg.enable {
home.packages = with pkgs; [
clipboard-jh
];
home.sessionVariables = {
CLIPBOARD_THEME = "ansi";
};
};
}

View file

@ -0,0 +1,122 @@
{
lib,
config,
namespace,
...
}:
let
inherit (lib)
mkIf
enabled
disabled
mkMerge
;
inherit (lib.${namespace}) mkEnableModule;
cfg = config.${namespace}.services.dunst;
inherit (config.${namespace}) theme;
isRosePine = theme.colors.base == "rose-pine";
in
{
options = mkEnableModule "services.dunst";
config = mkIf cfg.enable {
services.dunst = {
enable = true;
# I don't want to use the rose-pine icons; also don't want to deal with
# the drop-in weirdness.
# TODO: Convert dunst.rose-pine to attr set to fix this.
"${theme.colors.base}" = if isRosePine then disabled else enabled;
settings = mkMerge [
### Rose Pine ###
(mkIf isRosePine {
global = {
width = 400;
offset = "20x60";
progress_bar_min_width = 380;
progress_bar_max_width = 380;
progress_bar_corner_radius = 2;
padding = 10;
horizontal_padding = 10;
frame_width = 1;
gap_size = 3;
corner_radius = 2;
background = "#26233a";
foreground = "#e0def4";
};
urgency_low = {
background = "#26273d";
highlight = "#31748f";
frame_color = "#31748f";
default_icon = "dialog-information";
format = "<b><span foreground='#31748f'>%s</span></b>\\n%b";
};
urgency_normal = {
background = "#362e3c";
highlight = "#f6c177";
frame_color = "#f6c177";
default_icon = "dialog-warning";
format = "<b><span foreground='#f6c177'>%s</span></b>\\n%b";
};
urgency_critical = {
background = "#35263d";
highlight = "#eb6f92";
frame_color = "#eb6f92";
default_icon = "dialog-error";
format = "<b><span foreground='#eb6f92'>%s</span></b>\\n%b";
};
})
### Custom ###
{
global = {
monitor = 0;
sort = "yes";
idle_threshold = 120;
font = (builtins.head config.fonts.fontconfig.defaultFonts.monospace) + " 10";
markup = "full";
show_age_threshold = 60;
word_wrap = "yes";
ignore_newline = "no";
stack_duplicates = true;
hide_duplicate_count = false;
show_indicators = "yes";
sticky_history = "yes";
history_length = 20;
browser = "/usr/bin/zen-browser --new-tab";
always_run_script = true;
title = "Dunst";
class = "Dunst";
mouse_left_click = "do_action";
mouse_middle_click = "close_current";
mouse_right_click = "close_all";
};
signed_on = {
appname = "Pidgin";
summary = "*signed on*";
urgency = "low";
};
signed_off = {
appname = "Pidgin";
summary = "*signed off*";
urgency = "low";
};
says = {
appname = "Pidgin";
summary = "*says*";
urgency = "critical";
};
}
];
};
};
}

View file

@ -0,0 +1,32 @@
{
lib,
config,
namespace,
pkgs,
...
}:
let
inherit (lib) mkIf;
inherit (lib.${namespace}) mkEnableModule;
cfg = config.${namespace}.services.syncthing;
in
{
options = mkEnableModule "services.syncthing";
config = mkIf cfg.enable {
home.packages = [
config.services.syncthing.tray.package
];
services.syncthing = {
enable = true;
tray = {
enable = true;
command = "syncthingtray";
package = pkgs.syncthingtray-minimal;
};
};
};
}

View file

@ -1,56 +0,0 @@
{
lib,
stdenv,
fetchurl,
fetchpatch,
fetchFromGitHub,
}:
stdenv.mkDerivation rec {
pname = "figlet";
version = "2.2.5";
# some tools can be found here ftp://ftp.figlet.org/pub/figlet/util/
src = fetchurl {
url = "ftp://ftp.figlet.org/pub/figlet/program/unix/figlet-${version}.tar.gz";
sha256 = "0za1ax15x7myjl8jz271ybly8ln9kb9zhm1gf6rdlxzhs07w925z";
};
contributed = fetchFromGitHub {
owner = "xero";
repo = "figlet-fonts";
rev = "a6d2db1a3ee88bec3518214e851825fc4495ac84";
hash = "sha256-dAs7N66D2Fpy4/UB5Za1r2qb1iSAJR6TMmau1asxgtY";
};
patches = [
(fetchpatch {
url = "https://git.alpinelinux.org/aports/plain/main/figlet/musl-fix-cplusplus-decls.patch?h=3.4-stable&id=71776c73a6f04b6f671430f702bcd40b29d48399";
name = "musl-fix-cplusplus-decls.patch";
sha256 = "1720zgrfk9makznqkbjrnlxm7nnhk6zx7g458fv53337n3g3zn7j";
})
(fetchpatch {
url = "https://github.com/cmatsuoka/figlet/commit/9a50c1795bc32e5a698b855131ee87c8d7762c9e.patch";
name = "unistd-on-darwin.patch";
sha256 = "hyfY87N+yuAwjsBIjpgvcdJ1IbzlR4A2yUJQSzShCRI=";
})
];
makeFlags = [
"prefix=$(out)"
"CC:=$(CC)"
"LD:=$(CC)"
];
postInstall = "cp -ar ${contributed}/* $out/share/figlet/";
doCheck = true;
meta = {
description = "Program for making large letters out of ordinary text";
homepage = "http://www.figlet.org/";
license = lib.licenses.afl21;
maintainers = with lib.maintainers; [ ehmry ];
platforms = lib.platforms.unix;
};
}

View file

@ -1,9 +0,0 @@
{ ... }:
{
imports = [
./javascript.nix
./go.nix
./nix.nix
./php.nix
];
}

View file

@ -1,14 +0,0 @@
{ config, ... }:
{
programs.go = {
enable = true;
};
home.sessionPath =
let
goPath = config.programs.go.goPath;
in
[
"${if (goPath == null) then "go" else goPath}"
];
}

View file

@ -1,10 +0,0 @@
{ pkgs, ... }:
{
home.packages = with pkgs; [
clipboard-jh
];
home.sessionVariables = {
CLIPBOARD_THEME = "ansi";
};
}

View file

@ -1,103 +0,0 @@
{
config,
lib,
...
}:
{
services.dunst = {
enable = true;
# I don't want to use the rose-pine icons; also don't want to deal with the
# drop-in weirdness.
rose-pine.enable = false;
settings = lib.mkMerge [
### Rose Pine ###
# TODO: Set this conditionally based on current theme.
{
global = {
width = 400;
offset = "20x60";
progress_bar_min_width = 380;
progress_bar_max_width = 380;
progress_bar_corner_radius = 2;
padding = 10;
horizontal_padding = 10;
frame_width = 1;
gap_size = 3;
corner_radius = 2;
background = "#26233a";
foreground = "#e0def4";
};
urgency_low = {
background = "#26273d";
highlight = "#31748f";
frame_color = "#31748f";
default_icon = "dialog-information";
format = "<b><span foreground='#31748f'>%s</span></b>\\n%b";
};
urgency_normal = {
background = "#362e3c";
highlight = "#f6c177";
frame_color = "#f6c177";
default_icon = "dialog-warning";
format = "<b><span foreground='#f6c177'>%s</span></b>\\n%b";
};
urgency_critical = {
background = "#35263d";
highlight = "#eb6f92";
frame_color = "#eb6f92";
default_icon = "dialog-error";
format = "<b><span foreground='#eb6f92'>%s</span></b>\\n%b";
};
}
### Custom ###
{
global = {
monitor = 0;
sort = "yes";
idle_threshold = 120;
font = (builtins.head config.fonts.fontconfig.defaultFonts.monospace) + " 10";
markup = "full";
show_age_threshold = 60;
word_wrap = "yes";
ignore_newline = "no";
stack_duplicates = true;
hide_duplicate_count = false;
show_indicators = "yes";
sticky_history = "yes";
history_length = 20;
browser = "/usr/bin/zen-browser --new-tab";
always_run_script = true;
title = "Dunst";
class = "Dunst";
mouse_left_click = "do_action";
mouse_middle_click = "close_current";
mouse_right_click = "close_all";
};
signed_on = {
appname = "Pidgin";
summary = "*signed on*";
urgency = "low";
};
signed_off = {
appname = "Pidgin";
summary = "*signed off*";
urgency = "low";
};
says = {
appname = "Pidgin";
summary = "*says*";
urgency = "critical";
};
}
];
};
}

View file

@ -1,12 +0,0 @@
{ pkgs, ... }:
{
services.syncthing = {
enable = true;
tray = {
enable = true;
command = "syncthingtray";
package = pkgs.syncthingtray-minimal;
};
};
}