Compare commits

...

4 Commits

89 changed files with 1838 additions and 463 deletions

View File

@ -1,15 +0,0 @@
#!/bin/bash
LOC="$1"
# HTML encode string as %20
LOCATION=$(sed -e "s/ /%20/g" <<<"$LOC")
content=$(curl -sS "https://thisdavej.azurewebsites.net/api/weather/current?loc=NewYork&deg=C")
ICON=$(curl -s 'https://wttr.in/?format=1' | sed 's/[+0-9a-cA-Z°-]//g' )
# echo $ICON
TEMP=$(echo $content | jq -r '. | "\(.temperature)°\(.degType)"' | sed 's/"//g')
TOOLTIP=$(echo $content | jq -r '. | "\(.temperature)°\(.degType)\n\(.skytext)"' | sed 's/"//g')
CLASS=$(echo $content | jq .skytext)
echo '{"text": "'$TEMP'", "tooltip": "'$ICON $TOOLTIP $LOC'", "class": '$CLASS' }'

View File

@ -1,21 +0,0 @@
#!/bin/bash
#simple Shellscript for waybar/i3blocks/polybar on Pinebook pro
#05012020 geri123@gmx.net Gerhard S.
PERCENT=$(cat /sys/class/power_supply/cw2015-battery/capacity)
STATUS=$(cat /sys/class/power_supply/cw2015-battery/status)
case $((
$PERCENT >= 0 && $PERCENT <= 20 ? 1 :
$PERCENT > 20 && $PERCENT <= 40 ? 2 :
$PERCENT > 40 && $PERCENT <= 60 ? 3 :
$PERCENT > 60 && $PERCENT <= 80 ? 4 : 5)) in
#
(1) echo $STATUS:"":$PERCENT%;;
(2) echo $STATUS:"":$PERCENT%;;
(3) echo $STATUS:"":$PERCENT%;;
(4) echo $STATUS:"":$PERCENT%;;
(5) echo $STATUS:"":$PERCENT%;;
esac

View File

@ -1,2 +0,0 @@
#!/bin/sh
yad --title="EndeavourOS Sway-WM keybindings:" --no-buttons --geometry=400x345-15-400 --list --column=key: --column=description: --column=command: "ESC" "close this app" "" "=" "modkey" "(set mod Mod4)" "+enter" "Terminal" "(xfce4-terminal)" "+d" "Application Menu" "(wofi)" "+p" "Activities" "(wofi)" "+o" "" "Open Broswer" "+n" "" "Open Files" "+q" "close focused app" "(kill)" "[Shift]+Print-key" "screenshot" "(grim)" "+Shift+e" "power-menu" "(wofi)" "+t" "open keybinding helper" "full list"

View File

@ -1,13 +0,0 @@
#!/bin/bash
LOC="$1"
# HTML encode string as %20
LOCATION=$(sed -e "s/ /%20/g" <<<"$LOC")
content=$(curl -sS "https://thisdavej.azurewebsites.net/api/weather/current?loc=$LOCATION&deg=C")
ICON=$(curl -s 'https://wttr.in/?format=1' | sed 's/[+0-9a-cA-Z°-]//g' )
# echo $ICON
TEMP=$(echo $content | jq -r '. | "\(.temperature)°\(.degType)"' | sed 's/"//g')
TOOLTIP=$(echo $content | jq -r '. | "\(.temperature)°\(.degType)\n\(.skytext)"' | sed 's/"//g')
CLASS=$(echo $content | jq .skytext)
echo '{"text": "'$TEMP'", "tooltip": "'$ICON $TOOLTIP $LOC'", "class": '$CLASS' }'

45
flake.lock generated
View File

@ -7,11 +7,11 @@
]
},
"locked": {
"lastModified": 1702735279,
"narHash": "sha256-SztEzDOE/6bDNnWWvnRbSHPVrgewLwdSei1sxoZFejM=",
"lastModified": 1705269478,
"narHash": "sha256-j7Rp8Y3ckBHOlIzqe0g2+/BVce9SU/dVtn4Eb0rMuY4=",
"owner": "nix-community",
"repo": "home-manager",
"rev": "e9b9ecef4295a835ab073814f100498716b05a96",
"rev": "846200eb574faa2af808ed02e653c2b8ed51fd71",
"type": "github"
},
"original": {
@ -20,33 +20,13 @@
"type": "github"
}
},
"nix-ld": {
"inputs": {
"nixpkgs": [
"nixpkgs"
]
},
"locked": {
"lastModified": 1701153607,
"narHash": "sha256-h+odOVyiGmEERMECoFOj5P7FPiMR8IPRzroFA4sKivg=",
"owner": "Mic92",
"repo": "nix-ld",
"rev": "bf5aa84a713c31d95b4307e442e966d6c7fd7ae7",
"type": "github"
},
"original": {
"owner": "Mic92",
"repo": "nix-ld",
"type": "github"
}
},
"nixpkgs": {
"locked": {
"lastModified": 1702312524,
"narHash": "sha256-gkZJRDBUCpTPBvQk25G0B7vfbpEYM5s5OZqghkjZsnE=",
"lastModified": 1705133751,
"narHash": "sha256-rCIsyE80jgiOU78gCWN3A0wE0tR2GI5nH6MlS+HaaSQ=",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "a9bf124c46ef298113270b1f84a164865987a91c",
"rev": "9b19f5e77dd906cb52dade0b7bd280339d2a1f3d",
"type": "github"
},
"original": {
@ -58,11 +38,11 @@
},
"nixpkgs-stable": {
"locked": {
"lastModified": 1702346276,
"narHash": "sha256-eAQgwIWApFQ40ipeOjVSoK4TEHVd6nbSd9fApiHIw5A=",
"lastModified": 1705183652,
"narHash": "sha256-rnfkyUH0x72oHfiSDhuCHDHg3gFgF+lF8zkkg5Zihsw=",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "cf28ee258fd5f9a52de6b9865cdb93a1f96d09b7",
"rev": "428544ae95eec077c7f823b422afae5f174dee4b",
"type": "github"
},
"original": {
@ -74,11 +54,11 @@
},
"nur": {
"locked": {
"lastModified": 1702770334,
"narHash": "sha256-MVILxIF9ZVIk0f9w3yYZpy8auwxgey0MFzdoIFFvQNU=",
"lastModified": 1705283909,
"narHash": "sha256-7F2KyTB4cApsHg7oltJ1r0QFWMjWTOaS9m2IbKFhj6Y=",
"owner": "nix-community",
"repo": "NUR",
"rev": "1d37444620523278aa163bb9e30104f5d1152061",
"rev": "375b9a949232cd1e31bd89d197a5605a17d2aeb3",
"type": "github"
},
"original": {
@ -90,7 +70,6 @@
"root": {
"inputs": {
"home-manager": "home-manager",
"nix-ld": "nix-ld",
"nixpkgs": "nixpkgs",
"nixpkgs-stable": "nixpkgs-stable",
"nur": "nur"

View File

@ -3,44 +3,24 @@
inputs = {
nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
nixpkgs-stable.url = "github:nixos/nixpkgs/nixos-23.11";
nix-ld = {
url = "github:Mic92/nix-ld";
inputs.nixpkgs.follows = "nixpkgs";
};
nur.url = "github:nix-community/NUR";
home-manager = {
url = "github:nix-community/home-manager";
inputs.nixpkgs.follows = "nixpkgs";
};
# firefox-addons = {
# url = "gitlab:rycee/nur-expressions?dir=pkgs/firefox-addons";
# inputs.nixpkgs.follows = "nixpkgs";
# };
};
outputs = { self, nixpkgs, nixpkgs-stable, nix-ld, nur, home-manager, ... } @ inputs:
outputs = { self, nixpkgs, nixpkgs-stable, nur, home-manager, ... } @ inputs:
let
inherit (self) outputs;
system = "x86_64-linux";
userName = "nate";
fullName = "Nate Anderson";
email = "n8r@tuta.io";
hostName = "winmax";
desktop = "sway";
gaming = true;
timeZone = "America/Denver";
pkgs = nixpkgs.legacyPackages.${system};
stablePkgs = nixpkgs-stable.legacyPackages.${system};
in
{
nixosConfigurations = {
nixosConfigurations = {
nixServer = nixpkgs.lib.nixosSystem {
specialArgs = { inherit inputs; };
modules = [
@ -49,24 +29,40 @@
inputs.home-manager.nixosModules.default
];
};
nixDesktop = nixpkgs.lib.nixosSystem {
nate = nixpkgs.lib.nixosSystem {
# Pass args to desktop configuration
specialArgs = {
inherit inputs outputs userName hostName desktop timeZone gaming system;
inherit inputs outputs timeZone system;
};
modules = [
./nixos/desktop_configuration.nix
# Setup nix-ld
nix-ld.nixosModules.nix-ld
# Setup home manager
home-manager.nixosModules.home-manager {
home-manager.useGlobalPkgs = true;
home-manager.useUserPackages = true;
home-manager.users.${userName} = import ./modules/home-manager/home.nix;
home-manager.extraSpecialArgs = {
inherit inputs outputs userName fullName email hostName desktop gaming;
};
}
# Setup home manager
inputs.home-manager.nixosModules.home-manager {
home-manager.useGlobalPkgs = true;
home-manager.useUserPackages = true;
home-manager.users.nate = import ./nate/modules/home-manager/home.nix;
home-manager.extraSpecialArgs = {
inherit inputs outputs;
};
}
./nate/default.nix
];
};
jaci = nixpkgs.lib.nixosSystem {
# Pass args to desktop configuration
specialArgs = {
inherit inputs outputs timeZone system;
};
modules = [
# Setup home manager
inputs.home-manager.nixosModules.home-manager {
home-manager.useGlobalPkgs = true;
home-manager.useUserPackages = true;
home-manager.users.jaci = import ./jaci/modules/home-manager/home.nix;
home-manager.extraSpecialArgs = {
inherit inputs outputs;
};
}
./jaci/default.nix
];
};
};

39
jaci/default.nix Normal file
View File

@ -0,0 +1,39 @@
{ config, lib, inputs, outputs, pkgs, system, timeZone, ... }:
let
userName = "jaci";
fullName = "Jaci Anderson";
email = "jaci.s.anderson@gmail.com";
hostName = "meowyxlife";
desktop = "kde";
gaming = true;
in
{
imports = [
./desktop-configuration.nix
./nixos/hardware-configuration.nix
];
deskCfg = {
userName = userName;
hostName = hostName;
de = desktop;
installGaming = gaming;
};
# Limit the number of generations to keep
boot.loader.systemd-boot.configurationLimit = 5;
# Perform garbage collection weekly to maintain low disk usage
nix.gc = {
automatic = true;
dates = "weekly";
options = "--delete-older-than 1w";
};
# Optimize storage
# You can also manually optimize the store via:
# nix-store --optimise
# Refer to the following link for more details:
# https://nixos.org/manual/nix/stable/command-ref/conf-file.html#conf-auto-optimise-store
nix.settings.auto-optimise-store = true;
}

View File

@ -0,0 +1,94 @@
{ config, lib, inputs, outputs, pkgs, timeZone, system, ... }:
let
supportedDesktops = [ "kde" ];
supportedDesktopsStr = lib.strings.concatStringsSep ", " supportedDesktops;
deskCfg = config.deskCfg;
in
{
options.deskCfg = {
de = lib.mkOption {
default = "kde";
type = lib.types.str;
description = "Desktop Environment";
};
userName = lib.mkOption {
type = lib.types.str;
description = "Main username for system";
};
hostName = lib.mkOption {
type = lib.types.str;
description = "Hostname for system";
};
installGaming = lib.mkOption {
type = lib.types.bool;
default = true;
description = "Whether to install gaming software or not";
};
};
imports = [
modules/user/main_user.nix
modules/labwc/labwc_conf.nix
];
config = {
assertions = [
{
assertion = builtins.elem deskCfg.de supportedDesktops;
message = "Unsupported desktop environment: ${deskCfg.de}\nSupported DE's: ${supportedDesktopsStr}";
}
];
nixpkgs.overlays = [
inputs.nur.overlay
];
# Enable flakes feature
nix.settings.experimental-features = [
"nix-command" "flakes"
];
# Use the systemd-boot EFI boot loader.
boot.loader.systemd-boot.enable = true;
boot.loader.efi.canTouchEfiVariables = true;
# boot.plymouth.enable = true;
networking.hostName = deskCfg.hostName; # Define your hostname.
networking.networkmanager.enable = true; # Easiest to use and most distros use this by default.
time.timeZone = timeZone;
users.users.${deskCfg.userName} = {
isNormalUser = true;
initialPassword = "password";
description = "main user";
shell = pkgs.zsh;
extraGroups = [
"wheel"
"networkmanager"
"corectrl"
deskCfg.userName
"video"
"audio"
];
};
# main_user = {
# enable = true;
# userName = deskCfg.userName;
# isDesktopUser = true;
# };
labwc = {
enable = true;
useNonFree = true;
installGaming = deskCfg.installGaming;
systemPackages = with pkgs; [
libreoffice
];
};
system.stateVersion = "23.11"; # Did you read the comment?
};
}

View File

@ -0,0 +1,29 @@
#!/bin/dash
# Autostart Apps
xset +fp ~/.fonts/misc/
xset b off
xset r rate 250 25
xbacklight -set 5
/usr/lib/policykit-1-gnome/polkit-gnome-authentication-agent-1 &
pcmanfm -d &
compton -b
hsetroot -tile ~/.wallpaper.png
xsettingsd &
dunst -geometry "300x60-28+56" &
# Touchpad settings
synclient \
VertEdgeScroll=0 HorizEdgeScroll=0 \
VertTwoFingerScroll=1 HorizTwoFingerScroll=1 \
VertScrollDelta=320 HorizScrollDelta=320 \
MinSpeed=0.05 MaxSpeed=1.2 \
AccelFactor=0.04 CoastingSpeed=10 \
TapButton1=0 TapButton2=0 TapButton3=0
# Panel
panel &
trayer \
--align right --widthtype request --heighttype pixel --height 28 \
--transparent true --alpha 255 &

View File

@ -0,0 +1,5 @@
#define bullet_width 9
#define bullet_height 9
static unsigned char bullet_bits[] = {
0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x20, 0x00, 0x40, 0x00, 0x20, 0x00,
0x10, 0x00, 0x00, 0x00, 0x00, 0x00 };

View File

@ -0,0 +1,5 @@
#define close_width 12
#define close_height 12
static unsigned char close_bits[] = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x01, 0x90, 0x00, 0x60, 0x00,
0x60, 0x00, 0x90, 0x00, 0x08, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };

View File

@ -0,0 +1,5 @@
#define desk_width 12
#define desk_height 12
static unsigned char desk_bits[] = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x98, 0x01, 0x98, 0x01, 0x00, 0x00,
0x00, 0x00, 0x98, 0x01, 0x98, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };

View File

@ -0,0 +1,5 @@
#define desk_toggled_width 12
#define desk_toggled_height 12
static unsigned char desk_toggled_bits[] = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x98, 0x01, 0x98, 0x01, 0x60, 0x00,
0x60, 0x00, 0x98, 0x01, 0x98, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };

View File

@ -0,0 +1,5 @@
#define iconify_width 12
#define iconify_height 12
static unsigned char iconify_bits[] = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0xf8, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };

View File

@ -0,0 +1,5 @@
#define max_width 12
#define max_height 12
static unsigned char max_bits[] = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x01, 0x80, 0x01, 0x40, 0x01,
0x28, 0x00, 0x18, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };

View File

@ -0,0 +1,5 @@
#define max_disabled_width 12
#define max_disabled_height 12
static unsigned char max_disabled_bits[] = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x01, 0x80, 0x01, 0x40, 0x01,
0x28, 0x00, 0x18, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };

View File

@ -0,0 +1,5 @@
#define max_toggled_width 12
#define max_toggled_height 12
static unsigned char max_toggled_bits[] = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x01, 0x80, 0x01, 0x40, 0x01,
0x28, 0x00, 0x18, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };

View File

@ -0,0 +1,52 @@
<?xml version="1.0" encoding="UTF-8"?>
<openbox_menu
xmlns="http://openbox.org/"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://openbox.org/
file:///usr/share/openbox/menu.xsd">
<menu id="root-menu" label="Openbox 3">
<item label="Terminal emulator">
<action name="Execute">
<execute>x-terminal-emulator</execute>
</action>
</item>
<item label="Web browser">
<action name="Execute">
<execute>x-www-browser</execute>
</action>
</item>
<separator />
<menu execute="openbox-menu lxde-applications.menu" id="apps" label="Applications"/>
<menu id="client-list-menu" />
<separator />
<item label="Configurations">
<action name="Execute">
<execute>obconf</execute>
</action>
</item>
<item label="Reconfigure">
<action name="Reconfigure" />
</item>
<separator />
<menu id="exit" label="Exit" >
<item label="Logout">
<action name="Exit" />
</item>
<item label="Suspend">
<action name="Execute">
<execute>systemctl suspend</execute>
</action>
</item>
<item label="Reboot">
<action name="Execute">
<execute>systemctl reboot</execute>
</action>
</item>
<item label="Shutdown">
<action name="Execute">
<execute>systemctl poweroff</execute>
</action>
</item>
</menu>
</menu>
</openbox_menu>

774
jaci/dotfiles/labwc/rc.xml Normal file
View File

@ -0,0 +1,774 @@
<?xml version="1.0" encoding="UTF-8"?>
<openbox_config xmlns="http://openbox.org/3.4/rc" xmlns:xi="http://www.w3.org/2001/XInclude">
<resistance>
<strength>10</strength>
<screen_edge_strength>20</screen_edge_strength>
</resistance>
<focus>
<focusNew>yes</focusNew>
<!-- Always try to focus new windows when they appear. other rules do apply -->
<followMouse>no</followMouse>
<!-- Move focus to a window when you move the mouse into it -->
<focusLast>yes</focusLast>
<!-- Focus the last used window when changing desktops, instead of the one
under the mouse pointer. when followMouse is enabled -->
<underMouse>no</underMouse>
<!-- Move focus under the mouse, even when the mouse is not moving -->
<focusDelay>200</focusDelay>
<!-- When followMouse is enabled, the mouse must be inside the window for
this many milliseconds (1000 = 1 sec) before moving focus to it -->
<raiseOnFocus>no</raiseOnFocus>
<!-- When followMouse is enabled, and a window is given focus by moving the
mouse into it, also raise the window -->
</focus>
<placement>
<policy>Smart</policy>
<!-- 'Smart' or 'UnderMouse' -->
<center>yes</center>
<!-- Whether to place windows in the center of the free area found or
the top left corner -->
<monitor>Primary</monitor>
<!-- With Smart placement on a multi-monitor system, try to place new windows
on: 'Any' - any monitor, 'Mouse' - where the mouse is, 'Active' - where
the active window is, 'Primary' - only on the primary monitor -->
<primaryMonitor>1</primaryMonitor>
<!-- The monitor where Openbox should place popup dialogs such as the
focus cycling popup, or the desktop switch popup. It can be an index
from 1, specifying a particular monitor. Or it can be one of the
following: 'Mouse' - where the mouse is, or 'Active' - where
the active window is -->
</placement>
<theme>
<name>Adiantum</name>
<titleLayout>CLM</titleLayout>
<!--
Available characters are NDSLIMC, each can occur at most once.
N: window icon
L: window label (AKA title).
I: iconify
M: maximize
C: close
S: shade (roll up/down)
D: omnipresent (on all desktops).
-->
<keepBorder>yes</keepBorder>
<animateIconify>yes</animateIconify>
<font place="ActiveWindow">
<name>cinnamonroll</name>
<size>8</size>
<!-- font size in points -->
<weight>Normal</weight>
<!-- 'bold' or 'normal' -->
<slant>Normal</slant>
<!-- 'italic' or 'normal' -->
</font>
<font place="InactiveWindow">
<name>cinnamonroll</name>
<size>8</size>
<!-- font size in points -->
<weight>Normal</weight>
<!-- 'bold' or 'normal' -->
<slant>Normal</slant>
<!-- 'italic' or 'normal' -->
</font>
<font place="MenuHeader">
<name>cinnamonroll</name>
<size>8</size>
<!-- font size in points -->
<weight>Normal</weight>
<!-- 'bold' or 'normal' -->
<slant>Normal</slant>
<!-- 'italic' or 'normal' -->
</font>
<font place="MenuItem">
<name>cinnamonroll</name>
<size>8</size>
<!-- font size in points -->
<weight>Normal</weight>
<!-- 'bold' or 'normal' -->
<slant>Normal</slant>
<!-- 'italic' or 'normal' -->
</font>
<font place="ActiveOnScreenDisplay">
<name>cinnamonroll</name>
<size>8</size>
<!-- font size in points -->
<weight>Normal</weight>
<!-- 'bold' or 'normal' -->
<slant>Normal</slant>
<!-- 'italic' or 'normal' -->
</font>
<font place="InactiveOnScreenDisplay">
<name>cinnamonroll</name>
<size>8</size>
<!-- font size in points -->
<weight>Normal</weight>
<!-- 'bold' or 'normal' -->
<slant>Normal</slant>
<!-- 'italic' or 'normal' -->
</font>
</theme>
<desktops>
<!-- this stuff is only used at startup, pagers allow you to change them
during a session. these are default values to use when other ones are not
already set by other applications, or saved in your session.
Use obconf if you want to change these without having to log out
and back in -->
<number>4</number>
<firstdesk>1</firstdesk>
<names>
<name>1</name>
<name>2</name>
<name>3</name>
<name>4</name>
</names>
<popupTime>1000</popupTime>
<!-- The number of milliseconds to show the popup for when switching
desktops. Set this to 0 to disable the popup. -->
</desktops>
<resize>
<drawContents>yes</drawContents>
<popupShow>Nonpixel</popupShow>
<!-- 'Always', 'Never', or 'Nonpixel' (xterms and such) -->
<popupPosition>Center</popupPosition>
<!-- 'Center', 'Top', or 'Fixed' -->
<popupFixedPosition>
<!-- these are used if popupPosition is set to 'Fixed' -->
<x>10</x>
<!-- positive number for distance from left edge, negative number for
distance from right edge, or 'Center' -->
<y>10</y>
<!-- positive number for distance from top edge, negative number for
distance from bottom edge, or 'Center' -->
</popupFixedPosition>
</resize>
<!-- You can reserve a portion of your screen where windows will not cover when
they are maximized, or when they are initially placed.
Many programs reserve space automatically, but you can use this in other
cases. -->
<margins>
<top>48</top>
<bottom>16</bottom>
<left>16</left>
<right>16</right>
</margins>
<dock>
<position>TopLeft</position>
<!-- (Top|Bottom)(Left|Right|)|Top|Bottom|Left|Right|Floating -->
<floatingX>0</floatingX>
<floatingY>0</floatingY>
<noStrut>no</noStrut>
<stacking>Above</stacking>
<!-- 'Above', 'Normal', or 'Below' -->
<direction>Vertical</direction>
<!-- 'Vertical' or 'Horizontal' -->
<autoHide>no</autoHide>
<hideDelay>300</hideDelay>
<!-- in milliseconds (1000 = 1 second) -->
<showDelay>300</showDelay>
<!-- in milliseconds (1000 = 1 second) -->
<moveButton>Middle</moveButton>
<!-- 'Left', 'Middle', 'Right' -->
</dock>
<keyboard>
<chainQuitKey>C-g</chainQuitKey>
<!-- Keybindings for desktop switching -->
<keybind key="C-A-Left">
<action name="GoToDesktop">
<to>left</to>
<wrap>no</wrap>
</action>
</keybind>
<keybind key="C-A-Right">
<action name="GoToDesktop">
<to>right</to>
<wrap>no</wrap>
</action>
</keybind>
<!-- Sent window to next or previous workspace -->
<keybind key="W-S-Left">
<action name="SendToDesktop">
<to>left</to>
<wrap>no</wrap>
</action>
</keybind>
<keybind key="W-S-Right">
<action name="SendToDesktop">
<to>right</to>
<wrap>no</wrap>
</action>
</keybind>
<!-- Switch to another workspace -->
<keybind key="W-1">
<action name="GoToDesktop">
<to>1</to>
</action>
</keybind>
<keybind key="W-2">
<action name="GoToDesktop">
<to>2</to>
</action>
</keybind>
<keybind key="W-3">
<action name="GoToDesktop">
<to>3</to>
</action>
</keybind>
<keybind key="W-4">
<action name="GoToDesktop">
<to>4</to>
</action>
</keybind>
<!-- Sent window to worspace number -->
<keybind key="W-S-1">
<action name="SendToDesktop">
<to>1</to>
<wrap>no</wrap>
</action>
</keybind>
<keybind key="W-S-2">
<action name="SendToDesktop">
<to>2</to>
<wrap>no</wrap>
</action>
</keybind>
<keybind key="W-S-3">
<action name="SendToDesktop">
<to>3</to>
<wrap>no</wrap>
</action>
</keybind>
<keybind key="W-S-4">
<action name="SendToDesktop">
<to>4</to>
<wrap>no</wrap>
</action>
</keybind>
<!-- Keybindings for Aero Snap -->
<keybind key="W-Right">
<action name="UnmaximizeFull"/>
<action name="MoveResizeTo">
<x>-0</x>
<y>+0</y>
<width>50/100</width>
<height>100/100</height>
</action>
</keybind>
<keybind key="W-Left">
<action name="UnmaximizeFull"/>
<action name="MoveResizeTo">
<x>+0</x>
<y>+0</y>
<width>50/100</width>
<height>100/100</height>
</action>
</keybind>
<keybind key="W-Up">
<action name="UnmaximizeFull"/>
<action name="MoveResizeTo">
<width>75/100</width>
<height>75/100</height>
</action>
<action name="MoveToCenter"/>
</keybind>
<keybind key="W-Down">
<action name="UnmaximizeFull"/>
<action name="MoveResizeTo">
<width>50/100</width>
<height>50/100</height>
</action>
<action name="MoveToCenter"/>
</keybind>
<keybind key="W-S-Up">
<action name="UnmaximizeFull"/>
<action name="MoveResizeTo">
<width>75/100</width>
<height>75/100</height>
</action>
<action name="MoveToCenter"/>
</keybind>
<!-- Keybindings for moving window to edge -->
<keybind key="W-C-Right">
<action name="MoveToEdge">
<direction>east</direction>
</action>
</keybind>
<keybind key="W-C-Left">
<action name="MoveToEdge">
<direction>west</direction>
</action>
</keybind>
<keybind key="W-C-Up">
<action name="MoveToEdge">
<direction>north</direction>
</action>
</keybind>
<keybind key="W-C-Down">
<action name="MoveToEdge">
<direction>south</direction>
</action>
</keybind>
<keybind key="W-a">
<action name="MoveToCenter"/>
</keybind>
<!-- Keybindings for undecorate, fullscreen, minimize,
roll-up, stick, resize, move, close, and window menu -->
<keybind key="W-t">
<action name="ToggleDecorations"/>
</keybind>
<keybind key="W-f">
<action name="ToggleMaximize"/>
</keybind>
<keybind key="W-z">
<action name="Iconify"/>
</keybind>
<keybind key="W-u">
<action name="ToggleShade"/>
</keybind>
<keybind key="W-s">
<action name="ToggleOmnipresent"/>
</keybind>
<keybind key="W-r">
<action name="Resize"/>
</keybind>
<keybind key="W-m">
<action name="Move"/>
</keybind>
<keybind key="A-F4">
<action name="Close"/>
</keybind>
<keybind key="W-c">
<action name="Close"/>
</keybind>
<keybind key="A-space">
<action name="ShowMenu">
<menu>client-menu</menu>
</action>
</keybind>
<!-- Keybindings for window switching -->
<keybind key="A-Tab">
<action name="NextWindow">
<dialog>list</dialog>
<bar>no</bar>
<finalactions>
<action name="Focus"/>
<action name="Raise"/>
<action name="Unshade"/>
</finalactions>
</action>
</keybind>
<keybind key="A-S-Tab">
<action name="PreviousWindow">
<dialog>list</dialog>
<bar>no</bar>
<finalactions>
<action name="Focus"/>
<action name="Raise"/>
<action name="Unshade"/>
</finalactions>
</action>
</keybind>
<keybind key="C-A-Down">
<action name="NextWindow">
<dialog>list</dialog>
<bar>yes</bar>
<raise>yes</raise>
<finalactions>
<action name="Focus"/>
<action name="Raise"/>
<action name="Unshade"/>
</finalactions>
</action>
</keybind>
<keybind key="C-A-Up">
<action name="NextWindow">
<dialog>list</dialog>
<bar>yes</bar>
<raise>yes</raise>
<finalactions>
<action name="Focus"/>
<action name="Raise"/>
<action name="Unshade"/>
</finalactions>
</action>
</keybind>
<!-- Keybindings for window switching with the arrow keys -->
<keybind key="W-A-Right">
<action name="DirectionalCycleWindows">
<direction>right</direction>
<dialog>no</dialog>
</action>
</keybind>
<keybind key="W-A-Left">
<action name="DirectionalCycleWindows">
<direction>left</direction>
<dialog>no</dialog>
</action>
</keybind>
<keybind key="W-A-Up">
<action name="DirectionalCycleWindows">
<direction>up</direction>
<dialog>no</dialog>
</action>
</keybind>
<keybind key="W-A-Down">
<action name="DirectionalCycleWindows">
<direction>down</direction>
<dialog>no</dialog>
</action>
</keybind>
<!-- Keybindings for startmenu -->
<keybind key="W-d">
<action name="Execute">
<command>launch</command>
</action>
</keybind>
<keybind key="W-Tab">
<action name="ShowMenu">
<menu>client-list-combined-menu</menu>
</action>
</keybind>
<keybind key="W-space">
<action name="ShowMenu">
<menu>root-menu</menu>
</action>
</keybind>
<!-- Keybindings for running applications -->
<keybind key="W-Return">
<action name="Execute">
<command>x-terminal-emulator</command>
</action>
</keybind>
<keybind key="W-w">
<action name="Execute">
<command>x-www-browser</command>
</action>
</keybind>
<keybind key="W-e">
<action name="Execute">
<command>pcmanfm</command>
</action>
</keybind>
<keybind key="W-g">
<action name="Execute">
<command>geany</command>
</action>
</keybind>
<keybind key="W-v">
<action name="Execute">
<command>pavucontrol</command>
</action>
</keybind>
<!-- Take a screenshot, say "Cheeeese!" -->
<keybind key="Print">
<action name="Execute">
<command>screeny</command>
</action>
</keybind>
<keybind key="A-Print">
<action name="Execute">
<command>screeny -f</command>
</action>
</keybind>
<keybind key="C-Print">
<action name="Execute">
<command>screeny -s</command>
</action>
</keybind>
<!-- Multimedia keys-->
<keybind key="XF86AudioStop">
<action name="Execute">
<command>mpc stop</command>
</action>
</keybind>
<keybind key="XF86AudioPlay">
<action name="Execute">
<command>mpc toggle</command>
</action>
</keybind>
<keybind key="XF86AudioPrev">
<action name="Execute">
<command>mpc prev</command>
</action>
</keybind>
<keybind key="XF86AudioNext">
<action name="Execute">
<command>mpc next</command>
</action>
</keybind>
<keybind key="XF86MonBrightnessDown">
<action name="Execute">
<command>xbacklight -dec 5</command>
</action>
</keybind>
<keybind key="XF86MonBrightnessUp">
<action name="Execute">
<command>xbacklight -inc 5</command>
</action>
</keybind>
<!-- I'm not satisfied with PulseAudio default volume controller.
So, I use custom script instead -->
<keybind key="XF86AudioRaiseVolume">
<action name="Execute">
<command>pulsevol --up</command>
</action>
</keybind>
<keybind key="XF86AudioLowerVolume">
<action name="Execute">
<command>pulsevol --down</command>
</action>
</keybind>
<keybind key="XF86AudioMute">
<action name="Execute">
<command>pulsevol --mute</command>
</action>
</keybind>
<!-- Reload and Exit keybinds -->
<keybind key="W-S-BackSpace">
<action name="Restart"/>
</keybind>
<keybind key="W-S-r">
<action name="Reconfigure"/>
</keybind>
<keybind key="W-S-q">
<action name="Exit"/>
</keybind>
</keyboard>
<mouse>
<dragThreshold>1</dragThreshold>
<!-- number of pixels the mouse must move before a drag begins -->
<doubleClickTime>500</doubleClickTime>
<!-- in milliseconds (1000 = 1 second) -->
<screenEdgeWarpTime>0</screenEdgeWarpTime>
<!-- Time before changing desktops when the pointer touches the edge of the
screen while moving a window, in milliseconds (1000 = 1 second).
Set this to 0 to disable warping -->
<screenEdgeWarpMouse>false</screenEdgeWarpMouse>
<!-- Set this to TRUE to move the mouse pointer across the desktop when
switching due to hitting the edge of the screen -->
<context name="Desktop">
<mousebind button="W-Down" action="Click">
<action name="GoToDesktop">
<to>right</to>
<wrap>no</wrap>
</action>
</mousebind>
<mousebind button="W-Up" action="Click">
<action name="GoToDesktop">
<to>left</to>
<wrap>no</wrap>
</action>
</mousebind>
</context>
<context name="Frame">
<mousebind button="W-Down" action="Click">
<action name="GoToDesktop">
<to>right</to>
<wrap>no</wrap>
</action>
</mousebind>
<mousebind button="W-Up" action="Click">
<action name="GoToDesktop">
<to>left</to>
<wrap>no</wrap>
</action>
</mousebind>
</context>
<context name="Frame">
<mousebind button="W-Left" action="Drag">
<action name="Move"/>
</mousebind>
</context>
<context name="Titlebar">
<mousebind button="Left" action="Drag">
<action name="Move"/>
</mousebind>
<mousebind button="Left" action="DoubleClick">
<action name="ToggleMaximizeFull"/>
</mousebind>
<mousebind button="Up" action="Click">
<action name="if">
<shaded>no</shaded>
<then>
<action name="Shade"/>
</then>
</action>
</mousebind>
<mousebind button="Down" action="Click">
<action name="if">
<shaded>yes</shaded>
<then>
<action name="Unshade"/>
<action name="Raise"/>
</then>
</action>
</mousebind>
</context>
<context name="Titlebar Top Right Bottom Left TLCorner TRCorner BRCorner BLCorner">
<mousebind button="Left" action="Press">
<action name="Focus"/>
<action name="Raise"/>
</mousebind>
<mousebind button="Right" action="Press">
<action name="Focus"/>
<action name="Raise"/>
<action name="ShowMenu">
<menu>client-menu</menu>
</action>
</mousebind>
</context>
<context name="Top">
<mousebind button="Left" action="Drag">
<action name="Resize">
<edge>top</edge>
</action>
</mousebind>
</context>
<context name="Left">
<mousebind button="Left" action="Drag">
<action name="Resize">
<edge>left</edge>
</action>
</mousebind>
</context>
<context name="Right">
<mousebind button="Left" action="Drag">
<action name="Resize">
<edge>right</edge>
</action>
</mousebind>
</context>
<context name="Bottom">
<mousebind button="Left" action="Drag">
<action name="Resize">
<edge>bottom</edge>
</action>
</mousebind>
<mousebind button="Right" action="Press">
<action name="Focus"/>
<action name="Raise"/>
<action name="ShowMenu">
<menu>client-menu</menu>
</action>
</mousebind>
</context>
<context name="TRCorner BRCorner TLCorner BLCorner">
<mousebind button="Left" action="Press">
<action name="Focus"/>
<action name="Raise"/>
<action name="Unshade"/>
</mousebind>
<mousebind button="Left" action="Drag">
<action name="Resize"/>
</mousebind>
</context>
<context name="Client">
<mousebind button="Left" action="Press">
<action name="Focus"/>
<action name="Raise"/>
</mousebind>
<mousebind button="Right" action="Press">
<action name="Focus"/>
<action name="Raise"/>
</mousebind>
</context>
<context name="Icon">
<mousebind button="Left" action="Press">
<action name="Focus"/>
<action name="Raise"/>
<action name="Unshade"/>
<action name="ShowMenu">
<menu>client-menu</menu>
</action>
</mousebind>
<mousebind button="Right" action="Press">
<action name="Focus"/>
<action name="Raise"/>
<action name="ShowMenu">
<menu>client-menu</menu>
</action>
</mousebind>
</context>
<context name="AllDesktops">
<mousebind button="Left" action="Press">
<action name="Focus"/>
<action name="Raise"/>
<action name="Unshade"/>
</mousebind>
<mousebind button="Left" action="Click">
<action name="ToggleOmnipresent"/>
</mousebind>
</context>
<context name="Shade">
<mousebind button="Left" action="Press">
<action name="Focus"/>
<action name="Raise"/>
</mousebind>
<mousebind button="Left" action="Click">
<action name="ToggleShade"/>
</mousebind>
</context>
<context name="Iconify">
<mousebind button="Left" action="Press">
<action name="Focus"/>
<action name="Raise"/>
</mousebind>
<mousebind button="Left" action="Click">
<action name="Iconify"/>
</mousebind>
</context>
<context name="Maximize">
<mousebind button="Left" action="Press">
<action name="Focus"/>
<action name="Raise"/>
<action name="Unshade"/>
</mousebind>
<mousebind button="Left" action="Click">
<action name="ToggleMaximize"/>
</mousebind>
</context>
<context name="Close">
<mousebind button="Left" action="Press">
<action name="Focus"/>
<action name="Raise"/>
<action name="Unshade"/>
</mousebind>
<mousebind button="Left" action="Click">
<action name="Close"/>
</mousebind>
</context>
<context name="Root">
<!-- Menus -->
<mousebind button="Right" action="Press">
<action name="ShowMenu">
<menu>root-menu</menu>
</action>
</mousebind>
<mousebind button="Left" action="DoubleClick">
<action name="ShowMenu">
<menu>client-list-combined-menu</menu>
</action>
</mousebind>
</context>
</mouse>
<menu>
<file>menu.xml</file>
<hideDelay>200</hideDelay>
<!-- if a press-release lasts longer than this setting (in milliseconds),
the menu is hidden again -->
<middle>no</middle>
<!-- center submenus vertically about the parent entry -->
<submenuShowDelay>100</submenuShowDelay>
<!-- time to delay before showing a submenu after hovering over the parent entry.
if this is a negative value, then the delay is infinite and the
submenu will not be shown until it is clicked on -->
<submenuHideDelay>400</submenuHideDelay>
<!-- time to delay before hiding a submenu when selecting another entry in parent menu
if this is a negative value, then the delay is infinite and the
submenu will not be hidden until a different submenu is opened -->
<showIcons>no</showIcons>
<!-- controls if icons appear in the client-list-(combined-)menu -->
<manageDesktops>yes</manageDesktops>
<!-- show the manage desktops section in the client-list-(combined-)menu -->
</menu>
</openbox_config>

View File

@ -0,0 +1,5 @@
#define shade_width 12
#define shade_height 12
static unsigned char shade_bits[] = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x01, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };

View File

@ -0,0 +1,5 @@
#define shade_toggled_width 12
#define shade_toggled_height 12
static unsigned char shade_toggled_bits[] = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x01, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0xf8, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };

View File

@ -0,0 +1,70 @@
!! Menu
menu.border.width: 8
menu.border.color: #f9faf4
menu.overlap.x: -10
menu.title.bg: flat
menu.title.bg.color: #f9faf4
menu.title.text.color: #947e7b
menu.title.text.justify: center
menu.items.bg: flat
menu.items.bg.color: #f9faf4
menu.items.text.color: #947e7b
menu.items.active.bg: flat
menu.items.active.bg.color: #aecdad
menu.items.active.text.color: #526b6e
menu.items.disabled.text.color: #4d5066
menu.items.justify: left
menu.separator.padding.height: 2
menu.separator.color: #f9faf4
!! Titlebar
window.*.title.bg: flat
window.*.label.bg: parentrelative
window.active.title.bg.color: #e7e8eb
window.active.label.text.color: #70788d
window.inactive.title.bg.color: #e7e8eb
window.inactive.label.text.color: #d3d3d6
window.label.text.justify: center
!! Titlebar buttons
window.*.button.*.bg: parentrelative
window.*.button.*.pressed.bg: flat
window.active.button.*.image.color: #70788d
window.active.button.*.hover.image.color: #aecdad
window.active.button.*.pressed.bg.color: #aecdad
window.active.button.disabled.image.color: #d3d3d6
window.inactive.button.*.image.color: #d3d3d6
window.inactive.button.disabled.image.color: #d3d3d6
!! Borders
border.width: 0
padding.width: 12
padding.height: 8
window.client.padding.width: 0
window.client.padding.height: 0
window.handle.width: 2
window.active.border.color: #e7e8eb
window.active.client.color: #e7e8eb
window.active.handle.bg: flat
window.active.handle.bg.color: #e7e8eb
window.active.grip.bg: flat
window.active.grip.bg.color: #e7e8eb
window.inactive.grip.bg: flat
window.inactive.grip.bg.color: #e7e8eb
window.inactive.border.color: #e7e8eb
window.inactive.handle.bg: flat
window.inactive.handle.bg.color: #e7e8eb
window.inactive.client.color: #e7e8eb
!! OSD
osd.border.width: 1
osd.border.color: #e7e8eb
osd.label.text.color: #5c616c
osd.bg: flat
osd.bg.color: #e7e8eb
osd.label.bg: flat
osd.label.bg.color: #e7e8eb
osd.hilight.bg: flat
osd.hilight.bg.color: #aecdad
osd.unhilight.bg: flat solid
osd.unhilight.bg.color: #70788d

Binary file not shown.

View File

@ -30,7 +30,7 @@ in
engines = {
"Startpage" = {
urls = [{
template = "https://www.startpage.com/do/mypage.pl?prfe=a1ffaae1a3f4dc133b6e11b3d611db561598fc16fbc43a22c2694805a5b4d46852c848cb54f3ccbc9cea0e8e83dab567d3abe2b350870e7781f8701d4558a1c988aced444d1e8d8a7b830563/search?query={searchTerms}";
template = "https://www.startpage.com/sp/search?query={searchTerms}";
}];
};
};

View File

@ -0,0 +1,203 @@
{ inputs, outputs, lib, config, pkgs, ... }:
let
userName = "jaci";
fullName = "Jaci Anderson";
email = "jaci.s.anderson@gmail.com";
in
{
# nixpkgs.overlays = [
# inputs.nur.overlay
# ];
# nixpkgs.config.allowUnfree = true;
# inputs.nixpkgs-stable.config.allowUnfree = true;
imports = [
../apps/firefox/firefox.nix
];
home.username = userName;
home.homeDirectory = "/home/${userName}";
programs.home-manager.enable = true;
home.stateVersion = "23.11"; # Please read the comment before changing.
# The home.packages option allows you to install Nix packages into your
# environment.
firefoxApp.enable = true;
fonts.fontconfig.enable = true;
home.packages = with pkgs; [
# nur.repos.crazazy.js.eslint
# inputs.nixpkgs-stable.legacyPackages.x86_64-linux.corectrl
#
# Dev Tools
#
dbeaver
cargo
kakoune
# flutter
docker
docker-compose
python310
nodejs_21
zig
### LSP's
rnix-lsp # Nix LSP
openscad-lsp
nodePackages.typescript-language-server
vscode-langservers-extracted # provides eslint, markdown, json, css, and html lsp
rubyPackages.solargraph
python310Packages.python-lsp-server
zls
### Misc
# android-udev-rules
# android-tools
# sdkmanager
openscad
#
# Gaming
#
wine-wayland
webcord
#
# Better Unix
#
bat
duf
fd
fzf
lsd
ripgrep
tre-command
gtop
#
# Photo / Video
#
imv
mpv
gimp
#
# Communication
#
mumble
slack
signal-desktop
#
# Other
#
keepassxc
obs-studio
# Install fonts
(nerdfonts.override { fonts = [ "Hermit" "Overpass" ]; })
# # You can also create simple shell scripts directly inside your
# # configuration. For example, this adds a command 'my-hello' to your
# # environment:
# (pkgs.writeShellScriptBin "my-hello" ''
# echo "Hello, ${config.home.username}!"
# '')
];
# Home Manager is pretty good at managing dotfiles. The primary way to manage
# plain files is through 'home.file'.
home.file."${config.xdg.configHome}" = {
# # Building this configuration will create a copy of 'dotfiles/screenrc' in
# # the Nix store. Activating the configuration will then make '~/.screenrc' a
# # symlink to the Nix store copy.
# ".screenrc".source = dotfiles/screenrc;
source = ../../dotfiles;
recursive = true;
# # You can also set the file content immediately.
# ".gradle/gradle.properties".text = ''
# org.gradle.console=verbose
# org.gradle.daemon.idletimeout=3600000
# '';
};
# Home Manager can also manage your environment variables through
# 'home.sessionVariables'. If you don't want to manage your shell through Home
# Manager then you have to manually source 'hm-session-vars.sh' located at
# either
#
# ~/.nix-profile/etc/profile.d/hm-session-vars.sh
#
# or
#
# /etc/profiles/per-user/nate/etc/profile.d/hm-session-vars.sh
#
home.sessionVariables = {
EDITOR = "kak";
};
# Git setup
programs.git = {
enable = true;
userEmail = email;
userName = fullName;
};
# Zsh setup
programs.zsh = {
enable = true;
oh-my-zsh = {
enable = true;
plugins = [ "git" ];
theme = "half-life";
};
initExtra = ''
alias ask="nix-shell -p python310Packages.openai --run 'python ~/source/python/chat.py'"
fzf_projects() {
DIR=`
fd .git --search-path="$HOME/source/" -H --ignore-file ~/.config/fd-ignore -tdirectory | \
xargs dirname | \
sed 's|$HOME||g' | \
sort | \
uniq | \
fzf --preview 'ls $HOME/{}/README.md 2>/dev/null && bat $HOME/{}/README.md || printf "No README.md file found in this directory\n%s" {}' --preview-window=top | \
xargs printf "$HOME/%s/"
`
cd $DIR
}
alias p="fzf_projects source/"
### Busykid Bash Functions
'';
};
#
# Theming qt and gnome apps
#
qt = {
enable = true;
platformTheme = "gtk";
style.name = "adwaita-dark";
style.package = pkgs.adwaita-qt;
};
gtk = {
enable = true;
cursorTheme.package = pkgs.catppuccin-cursors;
cursorTheme.name = "latteFlamingo";
theme = {
name = "Catppuccin-Latte-Pink";
package = pkgs.catppuccin-gtk.override {
accents = [ "pink" ];
tweaks = [ ];
variant = "latte";
};
};
};
}

View File

@ -0,0 +1,132 @@
{ lib, config, pkgs, ... }:
{
options.labwc = {
enable = lib.mkEnableOption "Enable labwc window manager.";
useNonFree = lib.mkOption {
default = false;
example = true;
description = "Whether to enable non-free software in the labwc config";
};
installGaming = lib.mkOption {
default = false;
example = true;
description = "Whether to install gaming software on the system.";
};
systemPackages = lib.mkOption {
default = [];
description = "Add any additional packages desired. Merged with labwc defaults.";
};
};
###
## Configuration
###
config = lib.mkIf config.labwc.enable {
programs.sway.enable = true;
nixpkgs.config.allowUnfree = config.labwc.useNonFree;
# For R2ModMan
# nixpkgs.config.permittedInsecurePackages = [
# "electron-25.9.0"
# ];
###
## XDG portal setup
###
xdg.portal = {
config = {
common = {
default = [
"wlr"
];
};
};
extraPortals = with pkgs; [
xdg-desktop-portal-gtk
];
wlr.enable = true;
enable = true;
};
xdg.sounds.enable = true;
###
## System Packages
###
environment.systemPackages = with pkgs; lib.lists.flatten [
[
bash
foot
git
glib # gsettings
grim
labwc
libnotify
mako
ncspot
networkmanagerapplet
pavucontrol
slurp
swaylock
swayidle
swww
wl-clipboard
waybar
wdisplays
wofi
xdg-utils
zsh
# Fonts
]
config.labwc.systemPackages
# (lib.mkIf config.labwc.installGaming [
# pkgs.lutris
# ])
];
environment.loginShellInit = ''
[[ "$(tty)" == /dev/tty1 ]] && labwc
'';
# Thunar config
programs.thunar = {
enable = true;
plugins = with pkgs.xfce; [
thunar-archive-plugin
thunar-volman
];
};
programs.file-roller.enable = true;
programs.xfconf.enable = true;
programs.zsh.enable = true;
programs.steam.enable = config.labwc.installGaming;
# kdeconnect setup
programs.kdeconnect.enable = true;
###
## Services
###
services.gvfs.enable = true; # thunar functionalities
services.openssh.enable = true;
services.dbus.enable = true;
services.pipewire = {
enable = true;
alsa.enable = true;
pulse.enable = true;
};
###
## Misc
###
sound.enable = true;
# Necessary for home-manager labwc setup
security.polkit.enable = true;
hardware.opengl = {
enable = true;
driSupport = true;
};
};
}

39
nate/default.nix Normal file
View File

@ -0,0 +1,39 @@
{ config, lib, inputs, outputs, pkgs, system, timeZone, ... }:
let
userName = "nate";
fullName = "Nate Anderson";
email = "n8r@tuta.io";
hostName = "winmax";
desktop = "sway";
gaming = true;
in
{
imports = [
./desktop-configuration.nix
./nixos/hardware-configuration.nix
];
deskCfg = {
userName = userName;
hostName = hostName;
de = desktop;
installGaming = gaming;
};
# Limit the number of generations to keep
boot.loader.systemd-boot.configurationLimit = 5;
# Perform garbage collection weekly to maintain low disk usage
nix.gc = {
automatic = true;
dates = "weekly";
options = "--delete-older-than 1w";
};
# Optimize storage
# You can also manually optimize the store via:
# nix-store --optimise
# Refer to the following link for more details:
# https://nixos.org/manual/nix/stable/command-ref/conf-file.html#conf-auto-optimise-store
nix.settings.auto-optimise-store = true;
}

View File

@ -0,0 +1,82 @@
{ config, lib, inputs, outputs, pkgs, timeZone, system, ... }:
let
supportedDesktops = [ "sway" ];
supportedDesktopsStr = lib.strings.concatStringsSep ", " supportedDesktops;
deskCfg = config.deskCfg;
in
{
options.deskCfg = {
de = lib.mkOption {
default = "sway";
type = lib.types.str;
description = "Desktop Environment";
};
userName = lib.mkOption {
type = lib.types.str;
description = "Main username for system";
};
hostName = lib.mkOption {
type = lib.types.str;
description = "Hostname for system";
};
installGaming = lib.mkOption {
type = lib.types.bool;
default = true;
description = "Whether to install gaming software or not";
};
};
imports = [
modules/user/main_user.nix
modules/sway/sway_conf.nix
# inputs.nur.hmModules.nur
];
config = {
assertions = [
{
assertion = builtins.elem deskCfg.de supportedDesktops;
message = "Unsupported desktop environment: ${deskCfg.de}\nSupported DE's: ${supportedDesktopsStr}";
}
];
nixpkgs.overlays = [
inputs.nur.overlay
];
# Enable flakes feature
nix.settings.experimental-features = [
"nix-command" "flakes"
];
# Use the systemd-boot EFI boot loader.
boot.loader.systemd-boot.enable = true;
boot.loader.efi.canTouchEfiVariables = true;
# boot.plymouth.enable = true;
networking.hostName = deskCfg.hostName; # Define your hostname.
networking.networkmanager.enable = true; # Easiest to use and most distros use this by default.
time.timeZone = timeZone;
main_user = {
enable = true;
userName = deskCfg.userName;
isDesktopUser = true;
};
swaywm = {
enable = true;
useNonFree = true;
installGaming = deskCfg.installGaming;
systemPackages = with pkgs; [
libreoffice
];
};
system.stateVersion = "23.11"; # Did you read the comment?
};
}

View File

@ -9,4 +9,5 @@
# Wacom Tablet - Example
# input "1386:884:Wacom_Intuos_S_Pad" map_to_output HDMI-A-1
# input "1386:884:Wacom_Intuos_S_Pen" map_to_output HDMI-A-1
output DP-3 resolution 2560x1440@164.956Hz position 0,0
output * adaptive_sync on

View File

@ -1,4 +1,4 @@
#!/bin/bash
#!/usr/bin/env bash
PID_FILE="background.pid"
WP_LOC="/home/nate/.config/sway/wallpapers"
PREV_WP=""

View File

@ -1,4 +1,4 @@
#!/bin/sh
#!/usr/bin/env bash
# usage: import-gsettings
config="${XDG_CONFIG_HOME:-$HOME/.config}/gtk-3.0/settings.ini"

View File

@ -1,4 +1,4 @@
#!/bin/bash
#!/usr/bin/env bash
SCALE_FILE="scale.txt"
DIRNAME="/tmp/$(ls /tmp | grep scale.sh | head -n 1)"

View File

@ -1,4 +1,4 @@
#!/bin/bash
#!/usr/bin/env bash
entries="Active Screen Output Area Window"

View File

Before

Width:  |  Height:  |  Size: 221 KiB

After

Width:  |  Height:  |  Size: 221 KiB

View File

Before

Width:  |  Height:  |  Size: 150 KiB

After

Width:  |  Height:  |  Size: 150 KiB

View File

Before

Width:  |  Height:  |  Size: 218 KiB

After

Width:  |  Height:  |  Size: 218 KiB

View File

Before

Width:  |  Height:  |  Size: 772 KiB

After

Width:  |  Height:  |  Size: 772 KiB

View File

Before

Width:  |  Height:  |  Size: 1.1 MiB

After

Width:  |  Height:  |  Size: 1.1 MiB

View File

Before

Width:  |  Height:  |  Size: 344 KiB

After

Width:  |  Height:  |  Size: 344 KiB

View File

Before

Width:  |  Height:  |  Size: 591 KiB

After

Width:  |  Height:  |  Size: 591 KiB

View File

Before

Width:  |  Height:  |  Size: 138 KiB

After

Width:  |  Height:  |  Size: 138 KiB

View File

@ -1,4 +1,4 @@
#!/bin/bash
#!/usr/bin/env bash
entries="Default Colemak"

View File

@ -0,0 +1,67 @@
{lib, config, pkgs, inputs, ...}:
let
cfg = config.firefoxApp;
in
{
# imports = [
# inputs.nur.hmModules.nur
# ];
options.firefoxApp = {
enable = lib.mkEnableOption "enable firefox browser";
};
config = lib.mkIf cfg.enable {
programs.firefox = {
enable = true;
profiles = {
default = {
id = 0;
name = "default";
isDefault = true;
extensions = with pkgs; [
nur.repos.rycee.firefox-addons.darkreader
nur.repos.rycee.firefox-addons.keepassxc-browser
nur.repos.crazazy.firefox-addons.ublock-origin
];
search = {
# Replace default firefox search engine config with this one
force = true;
default = "Startpage";
engines = {
"Startpage" = {
urls = [{
template = "https://www.startpage.com/sp/search?query={searchTerms}";
}];
};
};
};
settings = {
"browser.startup.blankWindow" = true;
"browser.startup.homepage" = "about:blank";
"browser.newtabpage.enabled" = false;
"browser.search.region" = "US";
"browser.search.isUS" = true;
"distribution.searchplugins.defaultLocale" = "en-US";
"general.useragent.locale" = "en-US";
"extensions.activeThemeID" = "{831b8843-7251-4306-9521-e688f18b4aeb}";
"privacy.trackingprotection.enable" = true;
"privacy.trackingprotection.emailtracking.enable" = true;
"privacy.trackingprotection.socialtracking.enable" = true;
"privacy.clearOnShutdown.cookies" = true;
"browser.safebrowsing.passwords.enabled" = false;
"browser.migrate.interactions.passwords" = false;
"pref.privacy.disable_button.view_passwords" = false;
"signon.rememberSignon" = false;
"extensions.formautofill.creditCards.enabled" = false;
"extensions.formautofill.addresses.enabled" = false;
# "browser.bookmarks.showMobileBookmarks" = true;
# "browser.newtabpage.pinned" = [{
# title = "NixOS";
# url = "https://nixos.org";
# }];
};
};
};
};
};
}

View File

@ -1,9 +1,10 @@
{ inputs, outputs, lib, config, pkgs, userName, fullName, email, hostName, desktop, gaming, ... }:
{ inputs, outputs, lib, config, pkgs, ... }:
let
userName = "nate";
fullName = "Nathan Anderson";
email = "n8r@tuta.io";
in
{
# Home Manager needs a bit of information about you and the paths it should
# manage.
#
# nixpkgs.overlays = [
# inputs.nur.overlay
# ];
@ -29,13 +30,74 @@
home.packages = with pkgs; [
# nur.repos.crazazy.js.eslint
# inputs.nixpkgs-stable.legacyPackages.x86_64-linux.corectrl
# kakoune
#
# Dev Tools
#
dbeaver
cargo
kakoune
# flutter
docker
docker-compose
python310
nodejs_21
zig
### LSP's
rnix-lsp # Nix LSP
openscad-lsp
nodePackages.typescript-language-server
vscode-langservers-extracted # provides eslint, markdown, json, css, and html lsp
rubyPackages.solargraph
python310Packages.python-lsp-server
zls
### Misc
# android-udev-rules
# android-tools
# sdkmanager
openscad
#
# Gaming
#
wine-wayland
webcord
#
# Better Unix
#
bat
duf
fd
fzf
lsd
ripgrep
tre-command
gtop
# Normies
unzip
#
# Photo / Video
#
davinci-resolve-studio
imv
mpv
gimp
#
# Communication
#
mumble
slack
signal-desktop
#
# Other
#
keepassxc
obs-studio
signal-desktop
waybar
wofi
xfce.thunar
# Install fonts
(nerdfonts.override { fonts = [ "Hermit" "Overpass" ]; })
@ -47,10 +109,6 @@
# '')
];
# TODO not working firefox plugins
# extensions = with inputs.firefox-addons.packages.${pkgs.system}; [ ublock-origin bitwarden ];
# Home Manager is pretty good at managing dotfiles. The primary way to manage
# plain files is through 'home.file'.
home.file."${config.xdg.configHome}" = {
@ -85,24 +143,6 @@
XDG_CURRENT_DESKTOP="sway";
};
wayland.windowManager.sway = {
enable = true;
# config = rec {
# modifier = "Mod4";
# terminal = "foot";
# # startup = [
# # {command = "firefox";}
# # ];
# };
};
# kdeconnect setup
# services.kdeconnect = {
# enable = true;
# indicator = true;
# };
# Git setup
programs.git = {
enable = true;
@ -113,9 +153,6 @@
# Zsh setup
programs.zsh = {
enable = true;
#history = {
# Size = 10000;
#};
oh-my-zsh = {
enable = true;
plugins = [ "git" ];
@ -143,4 +180,23 @@
'';
};
qt = {
enable = true;
platformTheme = "gtk";
style.name = "adwaita-dark";
style.package = pkgs.adwaita-qt;
};
gtk = {
enable = true;
cursorTheme.package = pkgs.catppuccin-cursors;
cursorTheme.name = "latteFlamingo";
theme = {
name = "Catppuccin-Latte-Pink";
package = pkgs.catppuccin-gtk.override {
accents = [ "pink" ];
tweaks = [ ];
variant = "latte";
};
};
};
}

View File

@ -22,14 +22,15 @@
###
## Configuration
###
config = lib.mkIf config.swaywm.enable {
programs.sway.enable = true;
nixpkgs.config.allowUnfree = config.swaywm.useNonFree;
# For R2ModMan
nixpkgs.config.permittedInsecurePackages = [
"electron-25.9.0"
];
# nixpkgs.config.permittedInsecurePackages = [
# "electron-25.9.0"
# ];
###
## XDG portal setup
@ -69,12 +70,14 @@
slurp
swaylock
swayidle
swww
wl-clipboard
waybar
wdisplays
wofi
xdg-utils
zsh
# Fonts
]
config.swaywm.systemPackages
# (lib.mkIf config.swaywm.installGaming [
@ -82,6 +85,9 @@
# ])
];
environment.loginShellInit = ''
[[ "$(tty)" == /dev/tty1 ]] && sway
'';
# Thunar config
programs.thunar = {
enable = true;
@ -96,6 +102,9 @@
programs.zsh.enable = true;
programs.steam.enable = config.swaywm.installGaming;
programs.adb.enable = true;
# kdeconnect setup
programs.kdeconnect.enable = true;
###
## Services
@ -109,9 +118,6 @@
pulse.enable = true;
};
# kdeconnect setup
programs.kdeconnect.enable = true;
###
## Misc
###
@ -119,10 +125,13 @@
# Necessary for home-manager sway setup
security.polkit.enable = true;
# Use amdgpu-pro drivers for davinci
# services.xserver.videoDrivers = [ "amdgpu-pro" ];
hardware.opengl = {
enable = true;
# Mesa
enable = true;
# Vulkan
driSupport = true;
};
};
}

View File

@ -28,7 +28,7 @@ in
description = "main user";
shell = pkgs.zsh;
}
(lib.mkIf (!cfg.isDesktopUser) {
extraGroups = [
"wheel"
@ -50,3 +50,4 @@ in
})
];
};
}

View File

@ -0,0 +1,44 @@
# Do not modify this file! It was generated by nixos-generate-config
# and may be overwritten by future invocations. Please make changes
# to /etc/nixos/configuration.nix instead.
{ config, lib, pkgs, modulesPath, ... }:
{
imports =
[ (modulesPath + "/installer/scan/not-detected.nix")
];
boot.initrd.availableKernelModules = [ "xhci_pci" "ahci" "usbhid" "uas" "usb_storage" "sd_mod" ];
boot.initrd.kernelModules = [ "amdgpu" ];
boot.kernelModules = [ "kvm-amd" ];
boot.extraModulePackages = [ ];
fileSystems."/" =
{ device = "/dev/disk/by-uuid/e48c53a4-6e7d-4b12-a46e-a408956268ea";
fsType = "ext4";
};
fileSystems."/boot" =
{ device = "/dev/disk/by-uuid/82B2-9D40";
fsType = "vfat";
};
fileSystems."/home/nate/Games" =
{ device = "/dev/disk/by-uuid/d66b7920-2c29-400a-be51-0b3890ea63db";
fsType = "ext4";
};
swapDevices = [ ];
# Enables DHCP on each ethernet and wireless interface. In case of scripted networking
# (the default) this is the recommended approach. When using systemd-networkd it's
# still possible to use this option, but it's recommended to use it in conjunction
# with explicit per-interface declarations with `networking.interfaces.<interface>.useDHCP`.
networking.useDHCP = lib.mkDefault true;
# networking.interfaces.enp1s0f0u2u1u4.useDHCP = lib.mkDefault true;
# networking.interfaces.enp3s0.useDHCP = lib.mkDefault true;
# networking.interfaces.wlp4s0.useDHCP = lib.mkDefault true;
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
hardware.cpu.amd.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
}

View File

@ -1,27 +0,0 @@
# Edit this configuration file to define what should be installed on
# your system. Help is available in the configuration.nix(5) man page, on
# https://search.nixos.org/options and in the NixOS manual (`nixos-help`).
{ config, lib, pkgs, userName, hostName, ... }:
{
imports =
[ # Include the results of the hardware scan.
./hardware-configuration.nix
./sway_configuration.nix
# ../modules/user/main_user.nix
# ../modules/sway/sway_conf.nix
];
# Enable flakes feature
nix.settings.experimental-features = [
"nix-command" "flakes"
];
programs.nix-ld.enable = true;
system.stateVersion = "23.11"; # Did you read the comment?
}

View File

@ -1,123 +0,0 @@
{ config, lib, inputs, outputs, pkgs, userName, hostName, desktop, timeZone, gaming, system, ... }:
let
supportedDesktops = [ "sway" ];
supportedDesktopsStr = lib.strings.concatStringsSep ", " supportedDesktops;
in
{
assertions = [
{
assertion = builtins.elem desktop supportedDesktops;
message = "Unsupported desktop environment: ${desktop}\nSupported DE's: ${supportedDesktopsStr}";
}
];
nixpkgs.overlays = [
inputs.nur.overlay
];
imports = [ # Include the results of the hardware scan.
./hardware-configuration.nix
../modules/user/main_user.nix
../modules/sway/sway_conf.nix
# inputs.nur.hmModules.nur
];
# Enable flakes feature
nix.settings.experimental-features = [
"nix-command" "flakes"
];
# programs.nix-ld.dev.enable = true;
# nixpkgs.config.allowUnfree = true;
# Use the systemd-boot EFI boot loader.
boot.loader.systemd-boot.enable = true;
boot.loader.efi.canTouchEfiVariables = true;
networking.hostName = hostName; # Define your hostname.
networking.networkmanager.enable = true; # Easiest to use and most distros use this by default.
time.timeZone = timeZone;
main_user = {
enable = true;
userName = userName;
isDesktopUser = true;
};
swaywm = {
enable = desktop == "sway";
useNonFree = true;
installGaming = gaming;
systemPackages = with pkgs; [
#
# Dev Tools
#
dbeaver
cargo
kakoune
# flutter
docker
docker-compose
python310
nodejs_21
zig
### LSP's
rnix-lsp # Nix LSP
openscad-lsp
nodePackages.typescript-language-server
vscode-langservers-extracted # provides eslint, markdown, json, css, and html lsp
rubyPackages.solargraph
python310Packages.python-lsp-server
zls
### Misc
# android-udev-rules
# android-tools
# sdkmanager
openscad
#
# Productivity
#
libreoffice
#
# Gaming
#
mumble
wine-wayland
r2modman
#
# Better Unix
#
bat
duf
fd
fzf
lsd
ripgrep
gtop
#
# Photo / Video
#
davinci-resolve-studio
imv
mpv
gimp
#
# Work
#
slack
];
};
programs.adb.enable = true;
system.stateVersion = "23.11"; # Did you read the comment?
}

View File

@ -1,141 +0,0 @@
# Edit this configuration file to define what should be installed on
# your system. Help is available in the configuration.nix(5) man page, on
# https://search.nixos.org/options and in the NixOS manual (`nixos-help`).
{ config, lib, pkgs, inputs, ... }:
{
imports =
[ # Include the results of the hardware scan.
./hardware-configuration.nix
./modules/user/main_user.nix
inputs.home-manager.nixosModules.default
];
# Enable flakes feature
nix.settings.experimental-features = [
"nix-command" "flakes"
];
# Use the systemd-boot EFI boot loader.
boot.loader.systemd-boot.enable = true;
boot.loader.efi.canTouchEfiVariables = true;
# networking.hostName = "nixos"; # Define your hostname.
# Pick only one of the below networking options.
# networking.wireless.enable = true; # Enables wireless support via wpa_supplicant.
# networking.networkmanager.enable = true; # Easiest to use and most distros use this by default.
# Set your time zone.
time.timeZone = "America/Denver";
# Configure network proxy if necessary
# networking.proxy.default = "http://user:password@proxy:port/";
# networking.proxy.noProxy = "127.0.0.1,localhost,internal.domain";
# Select internationalisation properties.
# i18n.defaultLocale = "en_US.UTF-8";
# console = {
# font = "Lat2-Terminus16";
# keyMap = "us";
# useXkbConfig = true; # use xkb.options in tty.
# };
# Enable the X11 windowing system.
# services.xserver.enable = true;
# Configure keymap in X11
# services.xserver.xkb.layout = "us";
# services.xserver.xkb.options = "eurosign:e,caps:escape";
# Enable CUPS to print documents.
# services.printing.enable = true;
# Enable sound.
# sound.enable = true;
# hardware.pulseaudio.enable = true;
# Enable touchpad support (enabled default in most desktopManager).
# services.xserver.libinput.enable = true;
# Define a user account. Don't forget to set a password with passwd.
# users.users.nate = {
# initialPassword = "password";
# extraGroups = [ "wheel" ];
# isNormalUser = true;
# };
# Use main user module
main_user.enable = true;
main_user.userName = "natea";
# Sets up programs in /etc/profile instead of ~/.profile
home-manager.useUserPackages = true;
# Uses system nixpkgs instead of private, adds consistency and removes NIX_PATH dependency
home-manager.useGlobalPkgs = true;
home-manager.users.nate = { pkgs, ... }: {
programs.bash.enable = true;
home.packages = with pkgs; [
firefox
kakoune
curl
];
home.stateVersion = "23.11";
};
# List packages installed in system profile. To search, run:
# $ nix search wget
# environment.systemPackages = with pkgs; [
# vim # Do not forget to add an editor to edit configuration.nix! The Nano editor is also installed by default.
# wget
# ];
# Some programs need SUID wrappers, can be configured further or are
# started in user sessions.
# programs.mtr.enable = true;
# programs.gnupg.agent = {
# enable = true;
# enableSSHSupport = true;
# };
# List services that you want to enable:
# Enable the OpenSSH daemon.
services.openssh.enable = true;
# Open ports in the firewall.
# networking.firewall.allowedTCPPorts = [ ... ];
# networking.firewall.allowedUDPPorts = [ ... ];
# Or disable the firewall altogether.
# networking.firewall.enable = false;
# Copy the NixOS configuration file and link it from the resulting system
# (/run/current-system/configuration.nix). This is useful in case you
# accidentally delete configuration.nix.
# system.copySystemConfiguration = true;
# This option defines the first version of NixOS you have installed on this particular machine,
# and is used to maintain compatibility with application data (e.g. databases) created on older NixOS versions.
#
# Most users should NEVER change this value after the initial install, for any reason,
# even if you've upgraded your system to a new NixOS release.
#
# This value does NOT affect the Nixpkgs version your packages and OS are pulled from,
# so changing it will NOT upgrade your system.
#
# This value being lower than the current NixOS release does NOT mean your system is
# out of date, out of support, or vulnerable.
#
# Do NOT change this value unless you have manually inspected all the changes it would make to your configuration,
# and migrated your data accordingly.
#
# For more information, see `man configuration.nix` or https://nixos.org/manual/nixos/stable/options#opt-system.stateVersion .
system.stateVersion = "23.11"; # Did you read the comment?
}