3 Commits

Author SHA1 Message Date
45de738d59 wip: trying to get obsidian working
not a working build, syntax issues, added options that are not available
in stable home-manager
2025-08-08 22:10:47 -04:00
e6ae0c4c35 sway building 2025-07-30 22:33:23 -04:00
739f2e125f wip: added obsidian
but waybar failed to build
2025-07-30 08:29:27 -04:00
11 changed files with 200 additions and 225 deletions

12
flake.lock generated
View File

@@ -64,11 +64,11 @@
"zon2nix": "zon2nix" "zon2nix": "zon2nix"
}, },
"locked": { "locked": {
"lastModified": 1754941490, "lastModified": 1753816554,
"narHash": "sha256-2AJf0q4u1zakqjr0y4dCyqzdDSil8P5m2YpZxAAzJJw=", "narHash": "sha256-eyFfBXb5IJaNTGTdkjpWKSMTs8wiJ0i+9n5jUKtVFa4=",
"owner": "ghostty-org", "owner": "ghostty-org",
"repo": "ghostty", "repo": "ghostty",
"rev": "5bf632e9cc0e77a578bad983b0cbdf0451ce87d4", "rev": "c78d32074ebab14d2060e5cd3c7667cbe37ab8ee",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -129,11 +129,11 @@
}, },
"nixpkgs_2": { "nixpkgs_2": {
"locked": { "locked": {
"lastModified": 1754767907, "lastModified": 1753749649,
"narHash": "sha256-8OnUzRQZkqtUol9vuUuQC30hzpMreKptNyET2T9lB6g=", "narHash": "sha256-+jkEZxs7bfOKfBIk430K+tK9IvXlwzqQQnppC2ZKFj4=",
"owner": "nixos", "owner": "nixos",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "c5f08b62ed75415439d48152c2a784e36909b1bc", "rev": "1f08a4df998e21f4e8be8fb6fbf61d11a1a5076a",
"type": "github" "type": "github"
}, },
"original": { "original": {

View File

@@ -2,11 +2,16 @@
description = "Wyatt's nix configuration suite"; description = "Wyatt's nix configuration suite";
inputs = { inputs = {
nixpkgs.url = "github:nixos/nixpkgs/nixos-25.05"; nixpkgs.url = "github:nixos/nixpkgs/nixos-25.05";
nixpkgs-unstable.url = "github:nixos/nixpkgs/nixos-unstable";
nix-flatpak.url = "github:gmodena/nix-flatpak/?ref=v0.6.0"; nix-flatpak.url = "github:gmodena/nix-flatpak/?ref=v0.6.0";
home-manager = { home-manager = {
url = "github:nix-community/home-manager/release-25.05"; url = "github:nix-community/home-manager/release-25.05";
inputs.nixpkgs.follows = "nixpkgs"; inputs.nixpkgs.follows = "nixpkgs";
}; };
home-manager-unstable = {
url = "https://github.com/nix-community/home-manager";
inputs.nixpkgs.follows = "nixpkgs-unstable";
};
darwin = { darwin = {
url = "github:lnl7/nix-darwin/nix-darwin-25.05"; url = "github:lnl7/nix-darwin/nix-darwin-25.05";
inputs.nixpkgs.follows = "nixpkgs"; inputs.nixpkgs.follows = "nixpkgs";
@@ -17,9 +22,11 @@
outputs = inputs @ { outputs = inputs @ {
self, self,
nixpkgs, nixpkgs,
nixpkgs-unstable,
nix-flatpak, nix-flatpak,
darwin, darwin,
home-manager, home-manager,
home-manager-unstable,
ghostty, ghostty,
... ...
}: let }: let
@@ -28,6 +35,10 @@
extraSpecialArgs = { extraSpecialArgs = {
inherit userName userEmail ghostty; inherit userName userEmail ghostty;
}; };
obsidianOverlay = final: prev: {
obsidian = nixpkgs-unstable.legacyPackages.${final.system}.obsidian;
};
in { in {
meta = import ./meta; meta = import ./meta;
@@ -66,6 +77,10 @@
./modules/common ./modules/common
./modules/machine/cloud ./modules/machine/cloud
{
nixpkgs.overlays = [ obsidianOverlay ];
}
home-manager.nixosModules.home-manager home-manager.nixosModules.home-manager
{ {
home-manager.useGlobalPkgs = true; home-manager.useGlobalPkgs = true;

View File

@@ -1,4 +1,5 @@
{ {
config,
lib, lib,
pkgs, pkgs,
userName, userName,
@@ -13,7 +14,7 @@
}; };
in { in {
# Import sub modules # Import sub modules
imports = map (module: import module {inherit lib pkgs dirs userName userEmail ghostty;}) [ imports = map (module: import module {inherit config lib pkgs dirs userName userEmail ghostty;}) [
./atuin.nix ./atuin.nix
./shell.nix ./shell.nix
./packages ./packages
@@ -27,6 +28,7 @@ in {
./browser.nix ./browser.nix
./zellij.nix ./zellij.nix
./bat.nix ./bat.nix
./obsidian.nix
]; ];
# Home Manager needs a bit of information about you and the # Home Manager needs a bit of information about you and the
@@ -56,7 +58,7 @@ in {
size = 22; size = 22;
}; };
stateVersion = "24.11"; stateVersion = "25.05";
}; };
# Let Home Manager install and manage itself. # Let Home Manager install and manage itself.

View File

@@ -15,7 +15,7 @@
extraConfig = { extraConfig = {
init.defaultBranch = "master"; init.defaultBranch = "master";
push.autoSetupRemote = true; push.autoSetupRemote = true;
pull.rebase = false; pull.merge = true;
merge.tool = "nvimdiff"; merge.tool = "nvimdiff";
mergetool.keepBackup = false; mergetool.keepBackup = false;
}; };

53
home/obsidian.nix Normal file
View File

@@ -0,0 +1,53 @@
{ config, home-manager-unstable, pkgs, ...}: {
home.packages = with pkgs; [
obsidian
obsidian-export
];
programs.obsidian = {
enable = true;
package =
vaults = {
"notes" = {
enable = true;
target = "${config.home.homeDirectory}/Documents/obsidian/notes";
};
"work-notes" = {
enable = true;
target = "${config.home.homeDirectory}/Documents/obsidian/work-notes";
};
};
# defaultSettings = {
# themes = [ "catppuccin" ];
# };
};
home.activation.obsidianRepos = config.lib.dag.entryAfter ["writeBoundary"] ''
REPOS_DIR="${config.home.homeDirectory}/Documents/obsidian"
# Create the repos directory if it doesn't exist
mkdir -p "$REPOS_DIR"
# Function to clone or update a repository
clone_or_update() {
local repo_url="$1"
local vault_name="$2"
local vault_path="$REPOS_DIR/$vault_name"
if [ -d "$vault_path/.git" ]; then
echo "Updating existing vault: $vault_name"
cd "$vault_path"
${pkgs.git}/bin/git pull origin main || ${pkgs.git}/bin/git pull origin master || true
else
echo "Cloning new vault: $vault_name"
rm -rf "$vault_path" # Remove if exists but not a git repo
${pkgs.git}/bin/git clone "$repo_url" "$vault_path" || true
fi
}
# Clone repositories
clone_or_update "https://scm.wyattjmiller.com/NoteFolio/notes.git" "notes"
clone_or_update "https://scm.wyattjmiller.com/NoteFolio/work-notes.git" "work-notes"
echo "Obsidian repository vaults setup complete in $REPOS_DIR"
'';
}

View File

@@ -23,7 +23,6 @@
fh fh
aria2 aria2
yt-dlp yt-dlp
obsidian
vscode vscode
weechat weechat
inetutils inetutils

View File

@@ -1,125 +1,85 @@
{ {pkgs, ...}: {
lib, programs.fish = {
pkgs, enable = true;
userName, # initExtra = ''
... # export PATH="$PATH:$HOME/bin:$HOME/.local/bin:$HOME/go/bin"
}: { # '';
programs = {
fish = {
enable = true;
shellAliases = {
# ls aliases
ls = "eza --color";
la = "eza -l -all --color";
ll = "eza -l --color";
lt = "eza -l --color --git";
# lazygit alias
lg = "lazygit";
# cat, less, more alias
cat = "bat";
less = "bat";
more = "bat";
# top alias
top = "btm";
};
functions =
{
fish_greeting = {
body = ''
set memes \
"Crazy? I was crazy once. They locked me in a room. A rubber room. A rubber room with rats. And rats make me crazy." \
"Daddy, chill!" \
"What the hell is even that?!" \
"Road work ahead? Yeah, I sure hope it does!" \
"Look at all those chickens!" \
"I smell like beef" \
"Say, Coloardo - I'M A GIRAFFE" \
"I didn't get no sleep cause of y'all, y'all not gone get any sleep cause of me!" \
"This is the dollar store, how good can it be?" \
"That was legitness" \
"Deez nuts" \
"I wanna be a cowboy baby" \
"Can I get a waffle? Can I please get a waffle?" \
"I'm lesbian. I thought you were American." \
"You gotta give 'em that 'hawk tuah' and spit on that thang!" \
"We don't do that here..." \
"What are those?! They are my crocs..." \
"It's an avocado... Thanks!" \
"I am once again asking for your financial support" \
"Is that a weed?" \
"No, this is Patrick!" \
"Come ride, heroes, ride" \
"Away with the tide" \
"Concede your mind unto the fiend" \
"Darkness come, rend the shield of light" \
"The sun is setting, darkness taking over - a date with chaos and you're dressed to the nines" \
"Now kneel overdweller, your lord commands, there's no salvation for the sons of man" \
"Snap click clank whirr whizz wham boom!" \
"Rohs an kyn ala na"
set choose_meme (random)"%"(count $memes) shellAliases = {
set choose_meme $memes[(math $choose_meme"+1")] # ls aliases
printf (set_color F90)"%s\n" $choose_meme ls = "eza --color";
''; la = "eza -l -all --color";
# onEvent = "fish_greeting"; ll = "eza -l --color";
}; lt = "eza -l --color --git";
} // (lib.mkIf pkgs.stdenv.isLinux {
block = { # lazygit alias
body = '' lg = "lazygit";
echo "Starting systemd-inhibit..."
set inhibit_pid_file /tmp/fish_inhibit_pid_(whoami) # cat, less, more alias
bash -c 'systemd-inhibit --no-ask-password --what=idle --who="'${userName}'" --why="manual invocation" sh & echo $! > '"$inhibit_pid_file"' && disown' cat = "bat";
if test -f $inhibit_pid_file less = "bat";
set -g INHIBIT_PID (cat $inhibit_pid_file) more = "bat";
echo "Inhibit process started with PID: $INHIBIT_PID"
else # top alias
echo "Failed to start inhibit process" top = "btm";
return 1
end
'';
};
unblock = {
body = ''
set inhibit_pid_file /tmp/fish_inhibit_pid_(whoami)
if test -f $inhibit_pid_file
set INHIBIT_PID (cat $inhibit_pid_file)
echo "Killing inhibit process: $INHIBIT_PID"
kill -SIGTERM $INHIBIT_PID 2>/dev/null; or kill -SIGKILL $INHIBIT_PID 2>/dev/null
rm -f $inhibit_pid_file
set -e INHIBIT_PID
echo "Inhibit process terminated"
else
echo "No inhibit process file found"
end
'';
};
});
}; };
zsh = {
enable = true; functions = {
initContent = '' fish_greeting = {
if [[ -z "$BASH_EXECUTION_STRING" ]]; then body = ''
if [[ -n "$ZSH_VERSION" ]]; then set memes \
LOGIN_OPTION="--login" "Crazy? I was crazy once. They locked me in a room. A rubber room. A rubber room with rats. And rats make me crazy." \
else "Daddy, chill!" \
LOGIN_OPTION="" "What the hell is even that?!" \
fi "Road work ahead? Yeah, I sure hope it does!" \
exec ${pkgs.fish}/bin/fish $LOGIN_OPTION "Look at all those chickens!" \
fi "I smell like beef" \
''; "Say, Coloardo - I'M A GIRAFFE" \
}; "I didn't get no sleep cause of y'all, y'all not gone get any sleep cause of me!" \
bash = { "This is the dollar store, how good can it be?" \
enable = true; "That was legitness" \
initExtra = '' "Deez nuts" \
if [[ -z "$BASH_EXECUTION_STRING" ]]; then "I wanna be a cowboy baby" \
if [[ -n "$ZSH_VERSION" ]]; then "Can I get a waffle? Can I please get a waffle?" \
LOGIN_OPTION="--login" "I'm lesbian. I thought you were American." \
else "You gotta give 'em that 'hawk tuah' and spit on that thang!" \
LOGIN_OPTION="" "We don't do that here..."
fi
exec ${pkgs.fish}/bin/fish $LOGIN_OPTION set choose_meme (random)"%"(count $memes)
fi set choose_meme $memes[(math $choose_meme"+1")]
'';
printf (set_color F90)"%s\n" $choose_meme
'';
onEvent = "fish_greeting";
};
}; };
}; };
programs.zsh = {
enable = true;
initContent = ''
if [[ -z "$BASH_EXECUTION_STRING" ]]; then
if [[ -n "$ZSH_VERSION" ]]; then
LOGIN_OPTION="--login"
else
LOGIN_OPTION=""
fi
exec ${pkgs.fish}/bin/fish $LOGIN_OPTION
fi
'';
};
programs.bash = {
enable = true;
initExtra = ''
if [[ -z "$BASH_EXECUTION_STRING" ]]; then
if [[ -n "$ZSH_VERSION" ]]; then
LOGIN_OPTION="--login"
else
LOGIN_OPTION=""
fi
exec ${pkgs.fish}/bin/fish $LOGIN_OPTION
fi
'';
};
} }

View File

@@ -147,5 +147,20 @@ in {
programs.waybar = { programs.waybar = {
enable = pkgs.stdenv.isLinux; enable = pkgs.stdenv.isLinux;
systemd.enable = true; systemd.enable = true;
package = pkgs.waybar.overrideAttrs (old: {
version = "0.13.0";
src = pkgs.fetchFromGitHub {
owner = "Alexays";
repo = "Waybar";
rev = "0fcda9afa519eb84deda68c051f7938a6c6bdbce";
sha256 = "sha256-Puo/Y4qotb6uEEe9vbu/hyFXwLntr48R2C6mrmDKs0c=";
fetchSubmodules = true;
};
buildInputs = old.buildInputs ++ [ pkgs.fftw ];
mesonFlags = (old.mesonFlags or []) ++ [ "-Dcava=disabled" ];
});
}; };
} }

View File

@@ -1,19 +0,0 @@
{
config,
lib,
pkgs,
...
}:
with lib; let
cfg = config.appimage;
in {
options.appimage = {
enable = mkEnableOption "AppImage support";
};
config = mkIf cfg.enable {
environment.systemPackages = with pkgs; [
appimageupdate
appimage-run
];
};
}

View File

@@ -11,7 +11,6 @@
"info.beyondallreason.bar" "info.beyondallreason.bar"
"io.dbeaver.DBeaverCommunity" "io.dbeaver.DBeaverCommunity"
"io.openrct2.OpenRCT2" "io.openrct2.OpenRCT2"
"md.obsidian.Obsidian"
"org.prismlauncher.PrismLauncher" "org.prismlauncher.PrismLauncher"
"sh.cider.Cider" "sh.cider.Cider"
]; ];
@@ -21,13 +20,11 @@ in {
inherit lib pkgs flatpakPackages; inherit lib pkgs flatpakPackages;
}) })
../../apps/gaming.nix ../../apps/gaming.nix
../../apps/appimage.nix
../../graphics ../../graphics
../../pwrMgmt ../../pwrMgmt
../../networking/core.nix ../../networking/core.nix
../../sound/pipewire.nix ../../sound/pipewire.nix
../../sound/shairport.nix ../../sound/shairport.nix
../../sound/focusrite.nix
../../virtualization/podman.nix ../../virtualization/podman.nix
../../virtualization/hardware.nix ../../virtualization/hardware.nix
]; ];
@@ -36,13 +33,9 @@ in {
nix.settings.experimental-features = ["nix-command" "flakes"]; nix.settings.experimental-features = ["nix-command" "flakes"];
# Custom kernel/boot stuff # Custom kernel/boot stuff
boot = { boot.kernelPackages = pkgs.linuxPackages_latest;
kernelPackages = pkgs.linuxPackages_latest; boot.loader.systemd-boot.enable = true;
loader = { boot.loader.efi.canTouchEfiVariables = true;
systemd-boot.enable = true;
efi.canTouchEfiVariables = true;
};
};
# Enable Bluetooth if present # Enable Bluetooth if present
hardware.bluetooth.enable = true; hardware.bluetooth.enable = true;
@@ -69,6 +62,21 @@ in {
wl-clip-persist wl-clip-persist
]; ];
# Enable OpenSSH
services.openssh.enable = true;
# Enable keyring
services.gnome.gnome-keyring.enable = true;
# Enable GnuPG
programs.gnupg.agent = {
enable = true;
enableSSHSupport = true;
};
# Enable SUID wrappers (some programs need them)
programs.mtr.enable = true;
# Enable Polkit # Enable Polkit
security.polkit.enable = true; security.polkit.enable = true;
@@ -136,39 +144,14 @@ in {
networkManager.enable = true; networkManager.enable = true;
}; };
programs = { # Enable dconf
# Enable GnuPG programs.dconf.enable = true;
gnupg.agent = {
enable = true;
enableSSHSupport = true;
};
# Enable SUID wrappers (some programs need them)
mtr.enable = true;
# Enable dconf
dconf.enable = true;
};
# Add username to groups "wheel" and "video" - more may be added here later # Add username to groups "wheel" and "video" - more may be added here later
users.users.${userName}.extraGroups = ["wheel" "video" "gamemode" "podman" "network"]; users.users.${userName}.extraGroups = ["wheel" "video" "gamemode" "podman" "network"];
services = { # Flatpak packages (see ../../apps/flatpak.nix)
# Enable OpenSSH services.flatpak.packages = flatpakPackages;
openssh.enable = true;
# Enable keyring
gnome.gnome-keyring.enable = true;
# Flatpak packages (see ../../apps/flatpak.nix)
flatpak.packages = flatpakPackages;
};
# Focusrite Scarlett audio interface support (see ../../sound/focusrite.nix)
sound.hardware.focusrite.enable = true;
# AppImage support
appimage.enable = true;
# XDG stuff # XDG stuff
xdg = { xdg = {
@@ -176,12 +159,12 @@ in {
enable = true; enable = true;
config = { config = {
sway = { sway = {
default = ["wlr" "gtk"]; default = [ "wlr" "gtk" ];
"org.freedesktop.impl.portal.Secret" = ["gnome-keyring"]; "org.freedesktop.impl.portal.Secret" = [ "gnome-keyring" ];
}; };
common = { common = {
default = ["gtk"]; default = [ "gtk" ];
"org.freedesktop.impl.portal.Secret" = ["gnome-keyring"]; "org.freedesktop.impl.portal.Secret" = [ "gnome-keyring" ];
}; };
}; };
extraPortals = with pkgs; [ extraPortals = with pkgs; [

View File

@@ -1,33 +0,0 @@
# Must be paired with the pipewire Nix module, this does nothing but install packages
{
config,
lib,
pkgs,
...
}:
with lib; let
cfg = config.sound.hardware.focusrite;
in {
options.sound.hardware.focusrite = {
enable = mkEnableOption "Focusrite audio interface support";
guiSupport = mkOption {
type = types.bool;
default = false;
description = "Enable GUI support for Focusrite Scarlett audio interface (installs alsa-scarlett-gui)";
};
};
config = mkIf cfg.enable (mkMerge [
{
environment.systemPackages = with pkgs;
[
scarlett2
alsa-scarlett-gui
]
++ (
if cfg.guiSupport
then [pkgs.alsa-scarlett-gui]
else []
);
}
]);
}