Compare commits

..

60 Commits
jaci ... master

Author SHA1 Message Date
4ba888bc9e Update jaci drivers 2024-09-19 17:38:46 -06:00
cc8add034d Update sway config 2024-09-02 14:45:05 -06:00
82b87e3e13 Updated config to use stable by default, updated lots of sway and app config tweaks 2024-07-22 13:30:55 -06:00
90275dc0cd Fix open port in firewall 2024-05-15 11:38:30 -06:00
25901043df Fix pass path 2024-05-15 11:33:28 -06:00
4100a0821b Fix pass path 2024-05-15 11:31:36 -06:00
14a13e840a Actually enable the darn thing 2024-05-15 11:28:56 -06:00
9f0d61d7e7 Added open port 2024-05-15 11:23:43 -06:00
73a9435587 Fix path 2024-05-15 10:28:34 -06:00
8ba54ca386 Oops 2024-05-15 10:27:22 -06:00
f91bea3334 Put in settings 2024-05-15 10:23:31 -06:00
63d8d1ceb9 Fix for radicale file 2024-05-15 10:22:30 -06:00
b1bdee6fd4 Add radicale to NAS 2024-05-15 10:17:27 -06:00
2e2312fab7 Added ytdlp alias and changed folder structure 2024-04-25 09:57:16 -06:00
49de25db5a Added sway adaptive sync shell alias, added tenacity and usb utils 2024-04-16 09:39:38 -06:00
925f96b4d1 Update system to latest 2024 2024-04-15 15:35:51 -06:00
9ec123f0f2 betaflight udev rules 2024-04-12 07:08:56 -06:00
412f9100ca Added thumbnail support in thunar, betaflight, fixed webcord, moved to stable 2024-04-08 13:00:23 -06:00
0f0280473f Added pixel image backup systemd timer 2024-03-23 03:43:52 -06:00
45d9cadc71 Moar catppuccin theming!! Bat and delta viewer for git 2024-03-20 15:00:06 -06:00
1e02aaf73d Added default git config to be awesomer 2024-03-20 10:15:11 -06:00
351fa72260 Turned off adaptive sync by default, removed comments and settings for flutter app floating 2024-03-19 14:28:10 -06:00
db8579c6c0 Added rm -i alias because Im dangerous 2024-03-19 12:16:02 -06:00
ae7ba60036 add fix for cursors on other apps 2024-03-19 11:40:28 -06:00
eae8f61a59 Added cursor theme 2024-03-19 11:13:58 -06:00
5838527b6c Added better sway config defaults 2024-03-18 21:29:58 -06:00
6183e24f9a fix for kage group and user definition 2024-03-18 19:50:59 -06:00
47629ac5df Change to dedicated user for nfs and syncthing 2024-03-18 19:45:31 -06:00
b6cbe22d7a Fix for headless 2024-03-18 14:14:19 -06:00
0a7738b8cd Added proxy pass and fixed syncthing 2024-03-18 14:05:48 -06:00
286bb64d95 changed syncthing to use users group 2024-03-18 13:36:21 -06:00
a81ea65340 Changed nfs to map to users group 2024-03-18 13:35:45 -06:00
918d5ea085 removed all syncthing declarative config 2024-03-18 12:56:34 -06:00
c616655b97 removed all the declarative syncthing settings 2024-03-18 12:54:37 -06:00
8e42d4f55d Added syncthing 2024-03-18 12:45:31 -06:00
0ef91f571d fix for zfs nfs share 2024-03-18 11:06:33 -06:00
2faacde406 Added permission change 2024-03-18 10:09:37 -06:00
f53a34b2e7 Added squash for permissions 2024-03-18 09:59:28 -06:00
90b8d36143 added lib 2024-03-18 09:53:49 -06:00
3d71ee0bf8 Added options to nfs share and root 2024-03-18 09:53:08 -06:00
4f8c9c85aa fix for nfs share 2024-03-18 09:05:31 -06:00
44fe27911a Fix for wrong IP address in nfs export, changed luci term theme 2024-03-18 08:45:54 -06:00
f444961d8e added helix dotfiles 2024-03-17 22:57:21 -06:00
410fa99aff add zsh to server config 2024-03-17 22:55:53 -06:00
c65c49fbb8 oops 2024-03-17 22:54:19 -06:00
bafcb6cb21 fix luci home.nix 2024-03-17 22:52:07 -06:00
fad66ef62d Fix for luci default 2024-03-17 22:48:36 -06:00
77dfec308e Fix for server config 2024-03-17 22:29:41 -06:00
dcff7d9db4 added docker to server packages, added home luci config 2024-03-17 22:25:47 -06:00
f24abf52e2 Fix for server config 2024-03-17 22:16:55 -06:00
d1facb3be7 added shared server config file and modules 2024-03-17 22:13:28 -06:00
2f9f07b3e0 Update to helix config 2024-03-17 20:46:31 -06:00
6c392b49ea Merge branch 'master' of https://git.fosscat.com/n8r/nixos 2024-03-17 20:28:36 -06:00
4debc5d78c Added nas default working conf and hardware.nix 2024-03-17 20:27:54 -06:00
d7a2371938 Added polkit auth to sway config 2024-03-17 20:24:39 -06:00
e7fc91cb3e add direnv and rpi imager 2024-03-17 16:39:06 -06:00
87364629fa updated password 2024-02-15 18:26:51 -07:00
b73cad9444 Reverted flake update 2024-02-15 14:10:57 -07:00
5625ad83d9 Removed plugins folder from kak and added kakrc changes 2024-02-15 12:30:03 -07:00
ba4e1700e9 Attempting to fix firefox video meetings, further busted kakoune 2024-02-15 11:22:47 -07:00
49 changed files with 3808 additions and 401 deletions

View File

@ -3,46 +3,47 @@
"home-manager": { "home-manager": {
"inputs": { "inputs": {
"nixpkgs": [ "nixpkgs": [
"nixpkgs" "nixpkgs-unstable"
] ]
}, },
"locked": { "locked": {
"lastModified": 1705269478, "lastModified": 1718530513,
"narHash": "sha256-j7Rp8Y3ckBHOlIzqe0g2+/BVce9SU/dVtn4Eb0rMuY4=", "narHash": "sha256-BmO8d0r+BVlwWtMLQEYnwmngqdXIuyFzMwvmTcLMee8=",
"owner": "nix-community", "owner": "nix-community",
"repo": "home-manager", "repo": "home-manager",
"rev": "846200eb574faa2af808ed02e653c2b8ed51fd71", "rev": "a1fddf0967c33754271761d91a3d921772b30d0e",
"type": "github" "type": "github"
}, },
"original": { "original": {
"owner": "nix-community", "owner": "nix-community",
"ref": "release-24.05",
"repo": "home-manager", "repo": "home-manager",
"type": "github" "type": "github"
} }
}, },
"nixpkgs": { "nixpkgs": {
"locked": { "locked": {
"lastModified": 1705133751, "lastModified": 1719426051,
"narHash": "sha256-rCIsyE80jgiOU78gCWN3A0wE0tR2GI5nH6MlS+HaaSQ=", "narHash": "sha256-yJL9VYQhaRM7xs0M867ZFxwaONB9T2Q4LnGo1WovuR4=",
"owner": "nixos", "owner": "nixos",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "9b19f5e77dd906cb52dade0b7bd280339d2a1f3d", "rev": "89c49874fb15f4124bf71ca5f42a04f2ee5825fd",
"type": "github" "type": "github"
}, },
"original": { "original": {
"owner": "nixos", "owner": "nixos",
"ref": "nixos-unstable", "ref": "nixos-24.05",
"repo": "nixpkgs", "repo": "nixpkgs",
"type": "github" "type": "github"
} }
}, },
"nixpkgs-stable": { "nixpkgs-23": {
"locked": { "locked": {
"lastModified": 1705183652, "lastModified": 1719234068,
"narHash": "sha256-rnfkyUH0x72oHfiSDhuCHDHg3gFgF+lF8zkkg5Zihsw=", "narHash": "sha256-1AjSIedDC/aERt24KsCUftLpVppW61S7awfjGe7bMio=",
"owner": "nixos", "owner": "nixos",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "428544ae95eec077c7f823b422afae5f174dee4b", "rev": "90bd1b26e23760742fdcb6152369919098f05417",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -52,13 +53,29 @@
"type": "github" "type": "github"
} }
}, },
"nixpkgs-unstable": {
"locked": {
"lastModified": 1726463316,
"narHash": "sha256-gI9kkaH0ZjakJOKrdjaI/VbaMEo9qBbSUl93DnU7f4c=",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "99dc8785f6a0adac95f5e2ab05cc2e1bf666d172",
"type": "github"
},
"original": {
"owner": "nixos",
"ref": "nixos-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"nur": { "nur": {
"locked": { "locked": {
"lastModified": 1705283909, "lastModified": 1719509062,
"narHash": "sha256-7F2KyTB4cApsHg7oltJ1r0QFWMjWTOaS9m2IbKFhj6Y=", "narHash": "sha256-IYlezkrqdHmO/SXShve0PhDZVwLuHYweaRyrLrvta5E=",
"owner": "nix-community", "owner": "nix-community",
"repo": "NUR", "repo": "NUR",
"rev": "375b9a949232cd1e31bd89d197a5605a17d2aeb3", "rev": "0713da5785faf081a4fa06500890f8726755f464",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -71,7 +88,8 @@
"inputs": { "inputs": {
"home-manager": "home-manager", "home-manager": "home-manager",
"nixpkgs": "nixpkgs", "nixpkgs": "nixpkgs",
"nixpkgs-stable": "nixpkgs-stable", "nixpkgs-23": "nixpkgs-23",
"nixpkgs-unstable": "nixpkgs-unstable",
"nur": "nur" "nur": "nur"
} }
} }

View File

@ -2,31 +2,41 @@
description = "NixOS system flake."; description = "NixOS system flake.";
inputs = { inputs = {
nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable"; nixpkgs.url = "github:nixos/nixpkgs/nixos-24.05";
nixpkgs-stable.url = "github:nixos/nixpkgs/nixos-23.11"; nixpkgs-23.url = "github:nixos/nixpkgs/nixos-23.11";
nixpkgs-unstable.url = "github:nixos/nixpkgs/nixos-unstable";
nur.url = "github:nix-community/NUR"; nur.url = "github:nix-community/NUR";
home-manager = { home-manager = {
url = "github:nix-community/home-manager"; url = "github:nix-community/home-manager/release-24.05";
inputs.nixpkgs.follows = "nixpkgs"; inputs.nixpkgs.follows = "nixpkgs-unstable";
}; };
}; };
outputs = { self, nixpkgs, nixpkgs-stable, nur, home-manager, ... } @ inputs: outputs = { self, nixpkgs, nixpkgs-23, nixpkgs-unstable, nur, home-manager, ... } @ inputs:
let let
inherit (self) outputs; inherit (self) outputs;
system = "x86_64-linux"; system = "x86_64-linux";
timeZone = "America/Denver"; timeZone = "America/Denver";
pkgs = nixpkgs.legacyPackages.${system}; pkgs = nixpkgs.legacyPackages.${system};
stablePkgs = nixpkgs-stable.legacyPackages.${system}; unstablePkgs = import nixpkgs-unstable { system = system; config = { allowUnfree = true; }; };
pkgs23 = import nixpkgs-23 { system = system; config = { allowUnfree = true; }; };
in in
{ {
nixosConfigurations = { nixosConfigurations = {
nixServer = nixpkgs.lib.nixosSystem { luci = nixpkgs.lib.nixosSystem {
specialArgs = { inherit inputs; }; specialArgs = {
inherit inputs outputs timeZone system;
};
modules = [ modules = [
# nixpkgs.overlays = [ nur.overlay ]; inputs.home-manager.nixosModules.home-manager {
./nixos/server_configuration.nix home-manager.useGlobalPkgs = true;
inputs.home-manager.nixosModules.default home-manager.useUserPackages = true;
home-manager.users.luci = import ./luci/modules/home-manager/home.nix;
home-manager.extraSpecialArgs = {
inherit inputs outputs;
};
}
./luci/default.nix
]; ];
}; };
nate = nixpkgs.lib.nixosSystem { nate = nixpkgs.lib.nixosSystem {
@ -41,7 +51,7 @@
home-manager.useUserPackages = true; home-manager.useUserPackages = true;
home-manager.users.nate = import ./nate/modules/home-manager/home.nix; home-manager.users.nate = import ./nate/modules/home-manager/home.nix;
home-manager.extraSpecialArgs = { home-manager.extraSpecialArgs = {
inherit inputs outputs; inherit inputs outputs unstablePkgs pkgs23;
}; };
} }
./nate/default.nix ./nate/default.nix

View File

@ -27,7 +27,7 @@
nix.gc = { nix.gc = {
automatic = true; automatic = true;
dates = "weekly"; dates = "weekly";
options = "--delete-older-than 1w"; options = "--delete-older-than 21d";
}; };
# Optimize storage # Optimize storage

View File

@ -11,7 +11,7 @@ swww img ~/.config/labwc/backgrounds/cat1.jpg >/dev/null 2>&1 &
# output HDMI-A-1 position 1366,0 # output HDMI-A-1 position 1366,0
# output eDP-1 position 0,0 # output eDP-1 position 0,0
# } # }
#kanshi >/dev/null 2>&1 & kanshi >/dev/null 2>&1 &
# Launch a panel such as yambar or waybar. # Launch a panel such as yambar or waybar.
waybar >/dev/null 2>&1 & waybar >/dev/null 2>&1 &

View File

@ -7,49 +7,51 @@
@define-color egg_shell #f8f1dd; @define-color egg_shell #f8f1dd;
* { * {
border: none; border: none;
border-radius: 0; border-radius: 0;
margin: 0; margin: 0;
padding: 0; padding: 0;
color: @egg_shell; color: @egg_shell;
font-family: "GohuFont 14 Nerd Font"; font-family: "GohuFont 14 Nerd Font";
font-size: 16px; font-size: 16px;
font-weight: normal; font-weight: normal;
} }
/* The whole bar */ /* The whole bar */
#waybar { #waybar {
background: transparent; background: transparent;
background-color: transparent; background-color: transparent;
} }
#taskbar { #taskbar {
background: transparent; background: transparent;
color: @egg_shell; color: @egg_shell;
} }
#taskbar button { #taskbar button {
padding-left: 3px; padding-left: 3px;
padding-right: 3px; padding-right: 3px;
margin-left: 3px; margin-left: 3px;
margin-right: 3px; margin-right: 3px;
color: transparent; color: transparent;
border-bottom: 2px solid; border-bottom: 2px solid;
} }
#taskbar button.active { #taskbar button.active {
color: @celeste; color: @celeste;
} }
.modules-left, .modules-left,
.modules-right, .modules-right,
.modules-center { .modules-center {
margin: 8px 8px 1px 8px; margin: 8px 8px 1px 8px;
background: transparent; background: transparent;
color: @egg_shell; color: @egg_shell;
background-color: @english_violet; background-color: @english_violet;
border-radius: 25px; border-radius: 25px;
padding: 0px 10px 0px 10px; padding: 0px 10px 0px 10px;
} }
/* Every modules */ /* Every modules */
#clock, #clock,
#cpu, #cpu,
@ -58,8 +60,8 @@
#network, #network,
#pulseaudio, #pulseaudio,
#taskbar { #taskbar {
padding:0.5rem 0.6rem; padding: 0.5rem 0.6rem;
margin: 1px 0px; margin: 1px 0px;
} }
/* ----------------------------------------------------------------------------- /* -----------------------------------------------------------------------------
@ -67,7 +69,7 @@
* -------------------------------------------------------------------------- */ * -------------------------------------------------------------------------- */
#clock { #clock {
min-width: 140px; min-width: 140px;
} }
#cpu.warning, #cpu.warning,
@ -75,24 +77,24 @@
#memory.warning, #memory.warning,
#memory.critical, #memory.critical,
#network.disconnected { #network.disconnected {
color: @indian_red; color: @indian_red;
} }
#pulseaudio { #pulseaudio {
padding-top:6px; padding-top: 6px;
} }
#pulseaudio.muted { #pulseaudio.muted {
color: @celeste; color: @celeste;
} }
#custom-spotify { #custom-spotify {
color: @celadon; color: @celadon;
} }
#custom-power { #custom-power {
margin-left:15px; margin-left: 15px;
margin-right:15px; margin-right: 15px;
font-size:15px; font-size: 15px;
color: @indian_red; color: @indian_red;
} }

View File

@ -74,7 +74,6 @@
ripgrep ripgrep
tre-command tre-command
gtop gtop
htop
# #
# Photo / Video # Photo / Video

View File

@ -80,7 +80,6 @@
wl-clipboard wl-clipboard
waybar waybar
wdisplays wdisplays
wlr-randr
xdg-utils xdg-utils
zsh zsh
] ]
@ -129,16 +128,6 @@
pulse.enable = true; pulse.enable = true;
}; };
services.greetd = {
enable = true;
settings = rec {
initial_session = {
command = "${pkgs.labwc}/bin/labwc";
user = "jaci";
};
default_session = initial_session;
};
};
### ###
## Misc ## Misc
### ###
@ -147,8 +136,14 @@
security.polkit.enable = true; security.polkit.enable = true;
hardware.opengl = { hardware.opengl = {
enable = true; # Mesa
driSupport = true; # enable = true;
# Vulkan
# driSupport = true;
# Rocm support and vulkan drivers
extraPackages = with pkgs; [
rocmPackages.clr.icd
];
}; };
}; };
} }

View File

@ -12,10 +12,7 @@
boot.initrd.kernelModules = [ "amdgpu" ]; boot.initrd.kernelModules = [ "amdgpu" ];
boot.kernelModules = [ "kvm-amd" ]; boot.kernelModules = [ "kvm-amd" ];
boot.extraModulePackages = [ ]; boot.extraModulePackages = [ ];
boot.kernelParams = [
# Fix for The Finals
"clearcpuid=304"
];
fileSystems."/" = fileSystems."/" =
{ device = "/dev/disk/by-label/NIXROOT"; { device = "/dev/disk/by-label/NIXROOT";
fsType = "ext4"; fsType = "ext4";

120
luci/configuration.nix Normal file
View File

@ -0,0 +1,120 @@
# 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, ... }:
{
imports =
[ # Include the results of the hardware scan.
./hardware-configuration.nix
];
# Use the systemd-boot EFI boot loader.
boot.loader.systemd-boot.enable = true;
boot.loader.efi.canTouchEfiVariables = true;
networking = {
hostId = "09e1d908";
hostName = "luci"; # Define your hostname.
# Pick only one of the below networking options.
# networking.wireless.enable = true; # Enables wireless support via wpa_supplicant.
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.luci = {
isNormalUser = true;
extraGroups = [ "wheel" ]; # Enable sudo for the user.
packages = with pkgs; [
firefox
tree
git
curl
nano
neofetch
];
};
# 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?
}

36
luci/default.nix Normal file
View File

@ -0,0 +1,36 @@
{ ... }:
let
userName = "luci";
email = "luci@fosscat.com";
hostName = "luci";
in
{
imports = [
./nixos/hardware-configuration.nix
../shared/nix-gc.nix
../shared/server-configuration.nix
];
serverConfig = {
userName = userName;
hostName = hostName;
hostId = "09e1d908";
email = email;
sshEnable = true;
nfsEnable = true;
nfsRoot = "/nfs_export";
nfsExports = [ "/kage" ];
nfsIpExport = "192.168.1.1/24";
syncthingEnable = true;
caldavEnable = true;
};
# deskCfg = {
# userName = userName;
# hostName = hostName;
# de = desktop;
# installGaming = gaming;
# };
nixGc.enable = true;
}

View File

@ -0,0 +1,166 @@
# Theme
theme = "catppuccin_macchiato"
[keys.normal]
# Navigation
n = "move_char_left" # Maps the 'a' key to the move_char_left command
i = "move_visual_line_down"
e = "move_visual_line_up"
o = "move_char_right"
I = "page_down"
E = "page_up"
# Modes
h = "insert_mode"
H = "insert_at_line_start"
l = "open_below"
L = "open_above"
# Search
k = "search_next"
K = "search_prev"
# Selection
C-s = "split_selection_on_newline"
C-minus = "merge_selections"
C-_ = "merge_consecutive_selections"
"C-;" = "flip_selections"
"C-:" = "ensure_selections_forward"
"C-," = "remove_primary_selection"
C-c = "change_selection_noyank"
C-d = "delete_selection_noyank"
"C-(" = "rotate_selection_contents_backward"
"C-)" = "rotate_selection_contents_forward"
C-x = "shrink_to_line_bounds"
C-J = "join_selections_space"
C-K = "remove_selections"
C-o = "expand_selection"
C-i = "shrink_selection"
C-p = "select_prev_sibling"
C-n = "select_next_sibling"
# Misc
"C-/" = "toggle_comments"
[keys.normal."C-space"]
x = ":wbc!"
s = ":w!" # save file
o = ":config-open"
[keys.normal.g]
"/" = "goto_next_buffer"
h = "goto_previous_buffer"
n = ["collapse_selection", "extend_to_line_start"]
o = ["collapse_selection", "extend_to_line_end"]
e = "move_line_up"
i = "move_line_down"
l = "goto_last_line"
p = "no_op"
k = "no_op"
j = "no_op"
[keys.normal.m]
m = ["select_mode", "match_brackets", "normal_mode"]
[keys.select]
n = "extend_char_left"
i = "extend_line_down"
e = "extend_line_up"
o = "extend_char_right"
[keys.select.g]
"/" = "goto_next_buffer"
h = "goto_previous_buffer"
n = "goto_line_start"
o = "goto_line_end"
e = "move_line_up"
i = "move_line_down"
l = "goto_last_line"
p = "no_op"
k = "no_op"
j = "no_op"
# Window mode
[keys.normal."C-w"]
h = "hsplit"
C-h = "hsplit"
n = "jump_view_left"
C-n = "jump_view_left"
i = "jump_view_down"
I = "swap_view_down"
C-i = "jump_view_down"
e = "jump_view_up"
E = "swap_view_up"
C-e = "jump_view_up"
o = "jump_view_right"
O = "swap_view_right"
C-o = "jump_view_right"
# Remove old
s = "no_op"
C-s = "no_op"
H = "no_op"
j = "no_op"
J = "no_op"
C-j = "no_op"
k = "no_op"
K = "no_op"
C-k = "no_op"
l = "no_op"
L = "no_op"
C-l = "no_op"
[keys.normal."space"]
h = "hover"
k = "select_references_to_symbol_under_cursor"
[editor]
bufferline = "multiple"
auto-save = true
line-number = "relative"
cursorline = true
color-modes = true
text-width = 120
auto-format = true
[editor.statusline]
left = ["mode", "spinner", "version-control", "file-name"]
mode.normal = "Normal"
mode.insert = "Insert"
mode.select = "Select"
[editor.indent-guides]
render = true
[editor.lsp]
display-messages = true
[editor.cursor-shape]
insert = "bar"
normal = "block"
select = "underline"
[editor.file-picker]
hidden = false
[editor.whitespace.render]
space = "all"
tab = "all"
tabpad = "all"
newline = "none"
nbsp = "none"
[editor.whitespace.characters]
space = "·"
tab = "⇀"
tabpad = " "
#w = "move_line_up" # Maps the 'w' key move_line_up
#"C-S-esc" = "extend_line" # Maps Ctrl-Shift-Escape to extend_line
#g = { a = "code_action" } # Maps `ga` to show possible code actions
#"ret" = ["open_below", "normal_mode"] # Maps the enter key to open_below then re-enter normal mode

View File

@ -0,0 +1,22 @@
# [language-server.flutter-lsp]
# command = "dart language-server --client-id helix --client-version 1.0"
# [[language]]
# name = "typescript"
# auto-format = true
# formatter = { command = "eslint", args = ["--parser", "typescript"] }# [[language]]
# name = "typescript"
# language-servers = [ { name = "eslint", only-features = [ "format" ] }, "typescript-language-server" ]
[[language]]
name = "dart"
formatter = {command = "dart", args = ["format", "-l", "120"]}
# [[language]]
# name = "dart"
# formatter = { command = "format", args = [ "-l", "120"] }
# config = { lineLength = 120 }
# config = { dartls.settings.dart.lineLength = 120 }
# config = { dart = { lineLength = 120 } }
# config = { settings = { dart = { lineLength = 120 } } }
# config = { dartls = { settings = { dart = { lineLength = 120 } } } }

View File

@ -0,0 +1,93 @@
{ lib, config, pkgs, ... }:
let
userName = "luci";
fullName = "Luci NAS";
email = "luci@fosscat.com";
in
{
home.username = userName;
home.homeDirectory = "/home/${userName}";
programs.home-manager.enable = true;
home.stateVersion = "23.11"; # Please read the comment before changing.
fonts.fontconfig.enable = true;
home.packages = with pkgs; [
helix
jq
#
# Better Unix
#
bat
duf
fd
fzf
lsd
ripgrep
tre-command
gtop
htop
neofetch
# Normies
unzip
imv
mpv
ffmpeg
];
home.file."${config.xdg.configHome}" = {
source = ../../dotfiles;
recursive = true;
};
# Copy radicale pass file
home.file."${config.xdg.configHome}/radicale" = {
source = ../radicale;
recursive = true;
};
home.sessionVariables = {
EDITOR = "hx";
};
# Git setup
programs.git = {
enable = true;
userEmail = email;
userName = fullName;
};
programs = {
direnv = {
enable = true;
enableZshIntegration = true; # see note on other shells below
nix-direnv.enable = true;
};
bash.enable = true; # see note on other shells below
};
# Zsh setup
programs.zsh = {
enable = true;
oh-my-zsh = {
enable = true;
plugins = [ "git" ];
theme = "dieter";
};
initExtra = ''
eval "$(direnv hook zsh)"
alias ls="lsd"
alias l="lsd --almost-all --long"
alias llm="lsd --timesort --long"
alias lS="lsd --oneline --classic"
alias lt="lsd --tree --depth=2"
alias grep="rg"
'';
};
}

View File

@ -0,0 +1 @@
n8r:$apr1$HpSAv/EE$pCDM0qP2JJIY0B5aUXjS30

View File

@ -0,0 +1,55 @@
# 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" "nvme" "usbhid" "usb_storage" "sd_mod" ];
boot.initrd.kernelModules = [ "zfs" ];
boot.kernelModules = [ "kvm-intel" ];
boot.extraModulePackages = [ ];
boot.supportedFilesystems = [ "zfs" ];
boot.kernelPackages = config.boot.zfs.package.latestCompatibleLinuxPackages;
boot.zfs.forceImportRoot = false;
fileSystems."/" =
{ device = "/dev/disk/by-label/NIXROOT";
fsType = "ext4";
};
fileSystems."/boot" =
{ device = "/dev/disk/by-label/NIXBOOT";
fsType = "vfat";
};
fileSystems."/nfs_export/kage" =
{ device = "zdata/kage";
fsType = "zfs";
};
# change ownership of kage to be open
systemd.tmpfiles.rules = [
"d /nfs_export/kage 0777 kage users - -"
];
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.enp3s0.useDHCP = lib.mkDefault true;
# networking.interfaces.enp4s0.useDHCP = lib.mkDefault true;
# networking.interfaces.enp5s0.useDHCP = lib.mkDefault true;
# networking.interfaces.enp6s0.useDHCP = lib.mkDefault true;
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
}

View File

@ -27,7 +27,7 @@
nix.gc = { nix.gc = {
automatic = true; automatic = true;
dates = "weekly"; dates = "weekly";
options = "--delete-older-than 1w"; options = "--delete-older-than 14d";
}; };
# Optimize storage # Optimize storage

View File

@ -73,6 +73,7 @@ in
installGaming = deskCfg.installGaming; installGaming = deskCfg.installGaming;
systemPackages = with pkgs; [ systemPackages = with pkgs; [
libreoffice libreoffice
rpi-imager
]; ];
}; };

Binary file not shown.

File diff suppressed because it is too large Load Diff

View File

@ -1,5 +1,5 @@
# Theme # Theme
theme = "catppuccin_frappe" theme = "catppuccin_macchiato"
[keys.normal] [keys.normal]
@ -9,11 +9,12 @@ i = "move_visual_line_down"
e = "move_visual_line_up" e = "move_visual_line_up"
o = "move_char_right" o = "move_char_right"
C-i = "half_page_down" I = "page_down"
C-e = "half_page_up" E = "page_up"
# Modes # Modes
h = "insert_mode" h = "insert_mode"
H = "insert_at_line_start"
l = "open_below" l = "open_below"
L = "open_above" L = "open_above"
@ -21,34 +22,115 @@ L = "open_above"
k = "search_next" k = "search_next"
K = "search_prev" K = "search_prev"
# Selection
C-s = "split_selection_on_newline"
C-minus = "merge_selections"
C-_ = "merge_consecutive_selections"
"C-;" = "flip_selections"
"C-:" = "ensure_selections_forward"
"C-," = "remove_primary_selection"
C-c = "change_selection_noyank"
C-d = "delete_selection_noyank"
"C-(" = "rotate_selection_contents_backward"
"C-)" = "rotate_selection_contents_forward"
C-x = "shrink_to_line_bounds"
C-J = "join_selections_space"
C-K = "remove_selections"
C-o = "expand_selection"
C-i = "shrink_selection"
C-p = "select_prev_sibling"
C-n = "select_next_sibling"
C-s = ":w" # Maps Ctrl-s to the typable command :w which is an alias for :write (save file) # Misc
C-o = ":open ~/.config/helix/config.toml" # Maps Ctrl-o to opening of the helix config file "C-/" = "toggle_comments"
C-l = ":open ~/.config/helix/languages.toml"
[keys.normal."C-space"]
x = ":wbc!"
s = ":w!" # save file
o = ":config-open"
[keys.normal.g] [keys.normal.g]
P = "goto_previous_buffer" "/" = "goto_next_buffer"
N = "goto_next_buffer" h = "goto_previous_buffer"
n = "goto_line_start" n = ["collapse_selection", "extend_to_line_start"]
o = "goto_line_end" o = ["collapse_selection", "extend_to_line_end"]
e = "move_line_up"
i = "move_line_down"
l = "goto_last_line"
p = "no_op"
k = "no_op"
j = "no_op"
[keys.normal.m]
m = ["select_mode", "match_brackets", "normal_mode"]
[keys.select] [keys.select]
n = "move_char_left" n = "extend_char_left"
i = "move_visual_line_down" i = "extend_line_down"
e = "move_visual_line_up" e = "extend_line_up"
o = "move_char_right" o = "extend_char_right"
[keys.select.g]
"/" = "goto_next_buffer"
h = "goto_previous_buffer"
n = "goto_line_start"
o = "goto_line_end"
e = "move_line_up"
i = "move_line_down"
l = "goto_last_line"
p = "no_op"
k = "no_op"
j = "no_op"
# Window mode
[keys.normal."C-w"]
h = "hsplit"
C-h = "hsplit"
n = "jump_view_left"
C-n = "jump_view_left"
i = "jump_view_down"
I = "swap_view_down"
C-i = "jump_view_down"
e = "jump_view_up"
E = "swap_view_up"
C-e = "jump_view_up"
o = "jump_view_right"
O = "swap_view_right"
C-o = "jump_view_right"
# Remove old
s = "no_op"
C-s = "no_op"
H = "no_op"
j = "no_op"
J = "no_op"
C-j = "no_op"
k = "no_op"
K = "no_op"
C-k = "no_op"
l = "no_op"
L = "no_op"
C-l = "no_op"
[keys.normal."space"]
h = "hover"
k = "select_references_to_symbol_under_cursor"
[editor] [editor]
bufferline = "multiple" bufferline = "always"
auto-save = true auto-save = true
line-number = "relative" line-number = "relative"
cursorline = true cursorline = true
cursorcolumn = true
color-modes = true color-modes = true
text-width = 120 text-width = 120
auto-format = true auto-format = true
[editor.statusline] [editor.statusline]
left = ["mode", "spinner", "version-control", "file-name"] left = ["mode", "spinner", "version-control"]
center = ["file-name"]
mode.normal = "Normal" mode.normal = "Normal"
mode.insert = "Insert" mode.insert = "Insert"
mode.select = "Select" mode.select = "Select"
@ -58,6 +140,7 @@ render = true
[editor.lsp] [editor.lsp]
display-messages = true display-messages = true
display-inlay-hints = false
[editor.cursor-shape] [editor.cursor-shape]
insert = "bar" insert = "bar"

View File

@ -1,22 +1,4 @@
# [language-server.flutter-lsp] # Change dart format to 120 lines
# command = "dart language-server --client-id helix --client-version 1.0"
# [[language]]
# name = "typescript"
# auto-format = true
# formatter = { command = "eslint", args = ["--parser", "typescript"] }# [[language]]
# name = "typescript"
# language-servers = [ { name = "eslint", only-features = [ "format" ] }, "typescript-language-server" ]
[[language]] [[language]]
name = "dart" name = "dart"
formatter = {command = "dart", args = ["format", "-l", "120"]} formatter = {command = "dart", args = ["format", "-l", "120"]}
# [[language]]
# name = "dart"
# formatter = { command = "format", args = [ "-l", "120"] }
# config = { lineLength = 120 }
# config = { dartls.settings.dart.lineLength = 120 }
# config = { dart = { lineLength = 120 } }
# config = { settings = { dart = { lineLength = 120 } } }
# config = { dartls = { settings = { dart = { lineLength = 120 } } } }

View File

@ -259,7 +259,7 @@ command = "lua-language-server"
# diagnostics.enable = true # diagnostics.enable = true
[language.markdown] [language.markdown]
filetype = ["md", "markdown"] filetypes = ["md", "markdown"]
roots = [".git", ".hg"] roots = [".git", ".hg"]
command = "vscode-markdown-language-server" command = "vscode-markdown-language-server"
args = ["--stdio"] args = ["--stdio"]

@ -0,0 +1 @@
Subproject commit 5db74769ca8710b27140cf5a1107183b339f2916

View File

@ -0,0 +1 @@

View File

@ -0,0 +1,87 @@
# Pastel theme for Kakoune
# Color palette
# declare-option str black 'rgb:2b2e33'
declare-option str black default
declare-option str dark 'rgb:3b3b46'
declare-option str gray 'rgb:5a5b5b'
declare-option str aqua 'rgb:6bbac1'
declare-option str white 'rgb:dcdbd7'
declare-option str blue 'rgb:65a4cf'
declare-option str cyan 'rgb:6dcac0'
declare-option str blue_green 'rgb:81bba3'
declare-option str green 'rgb:8dbc92'
declare-option str orange 'rgb:dea981'
declare-option str pink 'rgb:d38da9'
declare-option str purple 'rgb:ca9bf7'
declare-option str red 'rgb:db948e'
declare-option str yellow 'rgb:e1d179'
declare-option str lime 'rgb:adc47e'
declare-option str dimgray 'rgb:3d4747'
declare-option str psel 'rgba:46466480'
declare-option str ssel 'rgba:37375580'
declare-option str background %opt{black}
declare-option str dimmed_background %opt{gray}
declare-option str foreground %opt{white}
# Reference
# https://github.com/mawww/kakoune/blob/master/colors/default.kak
# For code
set-face global value "%opt{yellow}"
set-face global type "%opt{aqua}"
set-face global variable "%opt{purple}"
set-face global module "%opt{white}"
set-face global function "%opt{orange}"
set-face global string "%opt{pink}"
set-face global keyword "%opt{green}"
set-face global operator "%opt{aqua}"
set-face global attribute "%opt{blue_green}"
set-face global bracket "%opt{white}+b"
set-face global arguement "%opt{blue_green}"
set-face global comma "%opt{white}"
set-face global constant "%opt{blue_green}+b"
set-face global class "%opt{lime}"
set-face global comment "%opt{gray}+i"
set-face global meta "%opt{blue}"
set-face global builtin "%opt{cyan}+b"
# For markup
set-face global title "%opt{pink}"
set-face global header "%opt{orange}"
set-face global bold "%opt{pink}"
set-face global italic "%opt{purple}"
set-face global mono "%opt{green}"
set-face global block "%opt{cyan}"
set-face global link "%opt{green}"
set-face global bullet "%opt{green}"
set-face global list "%opt{white}"
# Builtin faces
set-face global Default "%opt{white},%opt{black}"
# set-face global Default "%opt{white},default"
set-face global PrimarySelection "default,%opt{psel}"
set-face global SecondarySelection "default,%opt{ssel}"
set-face global PrimaryCursor "%opt{dark},%opt{purple}"
set-face global SecondaryCursor "%opt{dark},%opt{aqua}"
set-face global PrimaryCursorEol "%opt{dark},%opt{yellow}"
set-face global SecondaryCursorEol "%opt{dark},%opt{blue}"
set-face global LineNumbers "%opt{gray},%opt{black}"
set-face global LineNumberCursor "%opt{purple},%opt{black}+b"
set-face global LineNumbersWrapped "%opt{gray},%opt{black}+i"
set-face global MenuForeground "%opt{dark},%opt{white}+b"
set-face global MenuBackground "%opt{white},%opt{dark}"
set-face global MenuInfo "%opt{dark},%opt{orange}"
set-face global Information "%opt{yellow},%opt{black}"
set-face global Error "%opt{red},%opt{black}"
set-face global StatusLine "%opt{white},%opt{black}"
set-face global StatusLineMode "%opt{aqua},%opt{black}"
set-face global StatusLineInfo "%opt{purple},%opt{black}"
set-face global StatusLineValue "%opt{orange},%opt{black}"
set-face global StatusCursor "%opt{white},%opt{blue}"
set-face global Prompt "%opt{green},%opt{black}"
set-face global MatchingChar "%opt{blue},%opt{black}"
set-face global Whitespace "%opt{dimgray},%opt{black}+f"
set-face global WrapMarker Whitespace
set-face global BufferPadding "%opt{black},%opt{black}"

View File

@ -28,9 +28,9 @@ set-option global startup_info_version 30000000
set-option global tabstop 4 set-option global tabstop 4
set-option global indentwidth 4 set-option global indentwidth 4
set-option global scrolloff 5,3 set-option global scrolloff 5,3
declare-option str kakrc_path "~/.config/kak/kakrc" declare-option str kakrc_path "~/system/nate/dotfiles/kak/kakrc"
declare-option str sway_conf_path "~/.config/sway/config.d/default" declare-option str sway_conf_path "~/system/nate/dotfiles/sway/config.d/default"
declare-option str shell_config "~/.zshrc" declare-option str shell_config "~/system/nate/modules/home-manager/home.nix"
# plug "catppuccin/kakoune" theme config %{ # plug "catppuccin/kakoune" theme config %{
# colorscheme catppuccin_macchiato # colorscheme catppuccin_macchiato
@ -56,6 +56,20 @@ hook global FocusOut .* %{ try %{
hook global BufWritePost .* %{ evaluate-commands 'git update-diff' } hook global BufWritePost .* %{ evaluate-commands 'git update-diff' }
hook global BufReload .* %{ evaluate-commands 'git update-diff' } hook global BufReload .* %{ evaluate-commands 'git update-diff' }
# Color Render in Echo Area
hook global WinSetOption filetype=kak %{ hook global NormalIdle .* %{
evaluate-commands -save-regs 'a' %{ try %{
execute-keys -draft <a-i>w"ay
evaluate-commands %sh{ (
color="${kak_reg_a}"
inverted_color=$(echo "${color}" | perl -pe 'tr/0123456789abcdefABCDEF/fedcba9876543210543210/')
printf "%s\n" "evaluate-commands -client $kak_client %{ try %{
echo -markup %{{rgb:${inverted_color},rgb:${color}+b} #${color} }
}}" | kak -p $kak_session
) >/dev/null 2>&1 </dev/null & }
}}
}}
# Add default,red and bold style to these regex matches # Add default,red and bold style to these regex matches
add-highlighter global/ regex \b(TODO|FIXME|XXX|NOTE)\b 0:default,red+rb add-highlighter global/ regex \b(TODO|FIXME|XXX|NOTE)\b 0:default,red+rb
@ -91,6 +105,7 @@ map global normal <c-S> <a-S> -docstring 'select first and last character of ea
map global normal '<c-;>' '<a-;>' -docstring 'flip direction of each selection' map global normal '<c-;>' '<a-;>' -docstring 'flip direction of each selection'
map global normal <c-:> <a-:> -docstring 'ensure selections are in forward direction (cursor then anchor)' map global normal <c-:> <a-:> -docstring 'ensure selections are in forward direction (cursor then anchor)'
map global normal <c-,> <a-,> -docstring 'clear the main selection' map global normal <c-,> <a-,> -docstring 'clear the main selection'
map global normal <c-.> <a-.> -docstring 'Repeat last object or f/t selection'
# Scrolling remap # Scrolling remap
map global normal <c-e> <pageup> -docstring 'Scroll screen up' map global normal <c-e> <pageup> -docstring 'Scroll screen up'
@ -244,9 +259,17 @@ plug "alexherbo2/auto-pairs.kak" %{
enable-auto-pairs enable-auto-pairs
} }
plug "https://github.com/h-youhei/kakoune-surround" plug "https://github.com/h-youhei/kakoune-surround"
map global normal <c-m> ':surround<ret>' map global normal <c-m> ':surround<ret>'
# Custom scripts # Custom scripts
source "~/.config/kak/rc/fzf_git.kak"
# evaluate-commands %sh{
# for file in ~/.config/kak/rc/*.kak; do
# printf "source %s\n" $file
# done
# }
# source "~/.config/kak/rc/"

View File

@ -0,0 +1,40 @@
#use evaluate-commands to collapse undo
define-command close_tag %{ evaluate-commands %{
#revert removing indent after leaving insert mode
try %{
execute-keys -draft '<a-h>s[^\n]<ret>'
} catch %{
execute-keys -draft 'K<a-&>'
}
execute-keys ';Gg<a-;>'
evaluate-commands %sh{
tag_list=`echo "$kak_selection" | grep -P -o '(?<=<)[^>]*[^/>](?=>)' | tac | cut -d ' ' -f 1`
close=
close_stack=
result=
for tag in $tag_list ; do
if [ `echo $tag | cut -c 1` = / ] ; then
close=${tag#/}
close_stack=$close\\n$close_stack
else
if [ $kak_opt_filetype != xml ] ; then
case $tag in
#self-closing tags
area|base|br|col|command|embed|hr|img|input|keygen|link|meta|param|source|track|wbr) continue ;;
esac
fi
if [ $tag = $close ] ; then
close_stack=${close_stack#*\\n}
close=`echo $close_stack | head -n 1`
else
result=$tag
break
fi
fi
done
[ -z $result ] && echo "fail 'no un-closed tag'"
echo "execute-keys -with-hooks \;i<lt>/$result><esc>"
}
}}
map global user c ':close_tag<ret>' -docstring "Close tag"

View File

@ -0,0 +1,26 @@
[delta "Catppuccin Macchiato"]
blame-palette = "#24273a #1e2030 #181926 #363a4f #494d64"
commit-decoration-style = "box ul"
dark = true
file-decoration-style = "#cad3f5"
file-style = "#cad3f5"
hunk-header-decoration-style = "box ul"
hunk-header-file-style = "bold"
hunk-header-line-number-style = "bold #a5adcb"
hunk-header-style = "file line-number syntax"
line-numbers = true
line-numbers-left-style = "#6e738d"
line-numbers-minus-style = "bold #ed8796"
line-numbers-plus-style = "bold #a6da95"
line-numbers-right-style = "#6e738d"
line-numbers-zero-style = "#6e738d"
# 25% red 75% base
minus-emph-style = "bold syntax #564052"
# 10% red 90% base
minus-style = "syntax #383143"
# 25% green 75% base
plus-emph-style = "bold syntax #455552"
# 10% green 90% base
plus-style = "syntax #313943"
# Should match the name of the bat theme
syntax-theme = "Catppuccin-macchiato"

View File

@ -1,19 +1,19 @@
font=UbuntuMono 12.5 font=Overpass Nerd Font 20
background-color=#404552 background-color=#24273a
text-color=#e5e9f0 text-color=#cad3f5
width=315 width=630
height=200 height=400
padding=10 padding=10
margin=10 margin=20
progress-color=over #eceff480 progress-color=over #eceff480
icon-path=/usr/share/icons/Arc-X-D icon-path=/usr/share/icons/Arc-X-D
max-icon-size=70 max-icon-size=140
layer=overlay layer=overlay
border-size=5 border-size=5
border-radius=0 border-radius=8
border-color=#5294e2 border-color=#b7bdf8
default-timeout=5000 default-timeout=5000

View File

@ -14,13 +14,14 @@ for_window [class="Telegram"] focus
for_window [app_id="xed"] focus for_window [app_id="xed"] focus
# default keepass main window to scratch
for_window [app_id="org.keepassxc.KeePassXC"] $floating_window
for_window [app_id="org.keepassxc.KeePassXC" title="KeePassXC"] move to scratchpad #, scratchpad show # default to show
# set floating (nontiling)for apps needing it: # set floating (nontiling) for apps needing it:
for_window [class="Yad" instance="yad"] floating enable for_window [class="Yad" instance="yad"] floating enable
for_window [app_id="yad"] floating enable for_window [app_id="yad"] floating enable
for_window [app_id="blueman-manager"] floating enable, resize set width 40 ppt height 30 ppt for_window [app_id="blueman-manager"] floating enable, resize set width 40 ppt height 30 ppt
for_window [app_id="mobile"] floating enable, resize set width 200 ppt height 400 ppt
# set floating (nontiling) for special apps: # set floating (nontiling) for special apps:
for_window [class="Xsane" instance="xsane"] floating enable for_window [class="Xsane" instance="xsane"] floating enable
@ -29,6 +30,7 @@ for_window [class="qt5ct" instance="qt5ct"] floating enable, resize set width 60
for_window [class="Bluetooth-sendto" instance="bluetooth-sendto"] floating enable for_window [class="Bluetooth-sendto" instance="bluetooth-sendto"] floating enable
for_window [app_id="pamac-manager"] floating enable, resize set width 80 ppt height 70 ppt for_window [app_id="pamac-manager"] floating enable, resize set width 80 ppt height 70 ppt
for_window [class="Lxappearance"] floating enable, resize set width 60 ppt height 50 ppt for_window [class="Lxappearance"] floating enable, resize set width 60 ppt height 50 ppt
for_window [class="steam" title="^((?!Steam$).)*"] floating enable
# set floating for window roles # set floating for window roles
for_window [window_role="pop-up"] floating enable for_window [window_role="pop-up"] floating enable

View File

@ -1,5 +1,5 @@
# Auth with polkit-gnome: # Auth with polkit-gnome:
exec /usr/lib/polkit-gnome/polkit-gnome-authentication-agent-1 exec lxqt-policykit-agent
# Desktop notifications # Desktop notifications
exec mako exec mako

View File

@ -145,8 +145,8 @@ exec swayidle -w\
# Move focus to the parent container # Move focus to the parent container
bindsym $mod+a focus parent bindsym $mod+a focus parent
bindsym $mod+g exec ~/.config/sway/scripts/scale.sh inc # bindsym $mod+g exec ~/.config/sway/scripts/scale.sh inc
bindsym $mod+m exec ~/.config/sway/scripts/scale.sh dec # bindsym $mod+m exec ~/.config/sway/scripts/scale.sh dec
# #
# Scratchpad: # Scratchpad:
@ -225,7 +225,7 @@ bindsym $mod+r mode "resize"
# #
# Screenshots # Screenshots
# #
bindsym $mod+Shift+p exec /usr/share/sway/scripts/grimshot --notify save output bindsym $mod+Shift+p exec ~/.config/sway/scripts/screenshot.sh clipboard
bindsym $mod+p exec ~/.config/sway/scripts/screenshot.sh bindsym $mod+p exec ~/.config/sway/scripts/screenshot.sh
# #
# Keybindings List # Keybindings List

View File

@ -9,5 +9,5 @@
# Wacom Tablet - Example # Wacom Tablet - Example
# input "1386:884:Wacom_Intuos_S_Pad" map_to_output HDMI-A-1 # 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 # input "1386:884:Wacom_Intuos_S_Pen" map_to_output HDMI-A-1
output DP-3 resolution 2560x1440@164.956Hz position 0,0 output DP-3 resolution 3840x2160@240.084Hz position 0,0
output * adaptive_sync on output * adaptive_sync off

View File

@ -41,8 +41,8 @@ font pango:Overpass Nerd Font 12
smart_borders on smart_borders on
# Set wallpaper: # Set wallpaper:
#exec_always swaybg -i /home/nate/.config/sway/wallpapers/ign-0000.png exec_always swaybg -i /home/nate/.config/sway/wallpapers/nix-black-4k.png
exec_always /home/nate/.config/sway/scripts/background.sh # exec_always /home/nate/.config/sway/scripts/background.sh
# Title format for windows # Title format for windows
for_window [shell="xdg_shell"] title_format "%title (%app_id)" for_window [shell="xdg_shell"] title_format "%title (%app_id)"
@ -71,31 +71,28 @@ bar {
swaybar_command waybar swaybar_command waybar
} }
set $opacity 0.88 set $opacity 0.8
set $floating_window floating enable, resize set width 1030 height 710, opacity 1.0 set $floating_window floating enable, resize set width 1030 height 710, opacity 1.0
for_window { for_window {
[class=".*"] opacity $opacity [class=".*"] opacity 1.0
[app_id=".*"] opacity $opacity [app_id=".*"] opacity 1.0
[app_id="firefox"] opacity 1.0 [app_id="foot"] opacity $opacity
[app_id="corectrl"] opacity 1.0 [app_id="thunar"] opacity $opacity
[app_id="org.keepassxc.KeePassXC"] $floating_window, move to scratchpad, sratchpad show, opacity 1.0
[app_id="pavucontrol"] opacity 1.0
[app_id="oversteer"] opacity 1.0
# Steam
[class="steam_app.*"] inhibit_idle fullscreen; floating enable; border none opacity 1.0 [class="steam_app.*"] inhibit_idle fullscreen; floating enable; border none opacity 1.0
[class="steam"] opacity 1.0 [class="steam"] opacity 1.0
[class="leagueclientux.exe"] opacity 1.0
[class="obsidian"] opacity 1.0
[title="(?:Open|Save|Save New|Open a) (?:File|Folder|As|Scene As)"] $floating_window
# Godot windows # Godot windows
[title="(?:Godot)"] opacity 1.0
[title="(?:Create New|Select Frames|project.godot|node)"] $floating_window [title="(?:Create New|Select Frames|project.godot|node)"] $floating_window
[title="(?:Create Folder|Node Configuration|Warning|Please Confirm)"] $floating_window, resize set height 200 [title="(?:Create Folder|Node Configuration|Warning|Please Confirm)"] $floating_window, resize set height 200
# Aseprite # Aseprite
[title="(?:Aseprite)"] opacity 1.0 [title="(?:Aseprite)"] opacity 1.0
# Floating windows
[title="(?:Open|Save|Save New|Open a) (?:File|Folder|As|Scene As)"] $floating_window
[window_role="pop-up"] $floating_window [window_role="pop-up"] $floating_window
[window_role="bubble"] $floating_window [window_role="bubble"] $floating_window
[window_role="task_dialog"] $floating_window [window_role="task_dialog"] $floating_window

View File

@ -4,15 +4,30 @@ entries="Active Screen Output Area Window"
selected=$(printf '%s\n' $entries | wofi --style=$HOME/.config/wofi/style.widgets.css --conf=$HOME/.config/wofi/config.screenshot | awk '{print tolower($1)}') selected=$(printf '%s\n' $entries | wofi --style=$HOME/.config/wofi/style.widgets.css --conf=$HOME/.config/wofi/config.screenshot | awk '{print tolower($1)}')
case $selected in if [ "$1" == "clipboard" ]; then
active) case $selected in
grimshot --notify save active;; active)
screen) grimshot --notify copy active;;
grimshot --notify save screen;; screen)
output) grimshot --notify copy screen;;
grimshot --notify save output;; output)
area) grimshot --notify copy output;;
grimshot --notify save area;; area)
window) grimshot --notify copy area;;
grimshot --notify save window;; window)
esac grimshot --notify copy window;;
esac
else
case $selected in
active)
grimshot --notify save active;;
screen)
grimshot --notify save screen;;
output)
grimshot --notify save output;;
area)
grimshot --notify save area;;
window)
grimshot --notify save window;;
esac
fi

Binary file not shown.

After

Width:  |  Height:  |  Size: 68 KiB

7
nate/dotfiles/vis/config Normal file
View File

@ -0,0 +1,7 @@
visualizer.fps=20
visualizer.spectrum.bar.spacing=1
visualizer.spectrum.bar.width=3
visualizer.spectrum.smoothing.mode=monstercat
visualizer.monstercat.smoothing.factor=3
audio.stereo.enabled=false

View File

View File

@ -2,13 +2,13 @@
{ {
"layer": "top", "layer": "top",
"position": "top", "position": "top",
"margin-top": 8, "margin-top": 3,
"margin-left": 10, "margin-left": 10,
"margin-right": 10, "margin-right": 10,
"margin-bottom": 8, "margin-bottom": 3,
// If height property would be not present, it'd be calculated dynamically // If height property would be not present, it'd be calculated dynamically
"height": 30, "height": 60,
"modules-left": [ "modules-left": [
"custom/launcher", "custom/launcher",
@ -17,6 +17,13 @@
], ],
"modules-center": [ "modules-center": [
"custom/signal",
"custom/steam",
"custom/spotify",
"custom/firefox",
"custom/slack",
"custom/files",
"custom/pomo",
], ],
"modules-right": [ "modules-right": [
@ -25,12 +32,11 @@
"memory", "memory",
"cpu", "cpu",
"pulseaudio", "pulseaudio",
"custom/spotify",
"custom/keyboard-layout", "custom/keyboard-layout",
"battery", "battery",
//"custom/PBPbattery", //"custom/PBPbattery",
"backlight#icon", // "backlight#icon",
"backlight#value", // "backlight#value",
"clock", "clock",
"tray", "tray",
//"custom/weather", //"custom/weather",
@ -80,7 +86,7 @@
"warning": 70, "warning": 70,
"critical": 90, "critical": 90,
}, },
"on-click": "xfce4-terminal -e 'htop'", "on-click": "foot -e 'htop'",
}, },
"custom/keyboard-layout": { "custom/keyboard-layout": {
@ -97,7 +103,7 @@
"memory": { "memory": {
"interval": 5, "interval": 5,
"format": " {}%", // Icon: memory "format": " {}%", // Icon: memory
"on-click": "xfce4-terminal -e 'htop'", "on-click": "foot -e 'htop'",
"states": { "states": {
"warning": 70, "warning": 70,
"critical": 90 "critical": 90
@ -110,7 +116,7 @@
"format-ethernet": " {ifname}: {ipaddr}/{cidr}", // Icon: ethernet "format-ethernet": " {ifname}: {ipaddr}/{cidr}", // Icon: ethernet
"format-disconnected": "⚠ Disconnected", "format-disconnected": "⚠ Disconnected",
"tooltip-format": "{ifname}: {ipaddr}", "tooltip-format": "{ifname}: {ipaddr}",
"on-click": "xfce4-terminal -e 'nmtui'", "on-click": "foot -e 'nmtui'",
}, },
"network#vpn": { "network#vpn": {
"interface": "tun0", "interface": "tun0",
@ -147,18 +153,18 @@
"scroll-step": 1, // %, can be a float "scroll-step": 1, // %, can be a float
"format": "{volume}% {icon}", "format": "{volume}% {icon}",
"format-bluetooth": "{volume}% {icon}  {format_source}", "format-bluetooth": "{volume}% {icon}  {format_source}",
"format-bluetooth-muted": " {icon}  {format_source}", "format-bluetooth-muted": " {icon}  {format_source}",
"format-muted": " {format_source}", "format-muted": " {format_source}",
"format-source": "{volume}% ", "format-source": "{volume}% ",
"format-source-muted": "", "format-source-muted": "",
"format-icons": { "format-icons": {
"headphone": "", "headphone": "",
"hands-free": "", "hands-free": "",
"headset": "", "headset": "",
"phone": "", "phone": "",
"portable": "", "portable": "",
"car": "", "car": "",
"default": [""] "default": [""]
}, },
"on-click": "pavucontrol", "on-click": "pavucontrol",
"on-scroll-up": "pactl set-sink-volume @DEFAULT_SINK@ +2%", "on-scroll-up": "pactl set-sink-volume @DEFAULT_SINK@ +2%",
@ -173,6 +179,12 @@
"interval": 600, "interval": 600,
}, },
// "custom/temp": {
// "exec": "notify-send \"temp thing\"",
// "interval": "once",
// "signal": 8,
// },
"tray": { "tray": {
"icon-size": 18, "icon-size": 18,
"spacing":10, "spacing":10,
@ -191,28 +203,54 @@
"on-scroll-up": "brightnessctl -c backlight set +1%" "on-scroll-up": "brightnessctl -c backlight set +1%"
}, },
"custom/firefox": { "custom/signal": {
"format": " ", "format": "  ",
"on-click": "exec firefox", "on-click": "exec signal",
"tooltip": false "tooltip": false,
},
"custom/steam": {
"format": "  ",
"on-click": "exec steam",
"tooltip": false,
}, },
"custom/spotify": { "custom/spotify": {
"format": " ", "format": "  ",
"on-click": "foot -e 'ncspot'", "on-click": "foot -e 'ncspot'",
"tooltip": false "tooltip": false,
}, },
"custom/terminal": { "custom/firefox": {
"format": " ", "format": " ",
"on-click": "exec xfce4-terminal", "on-click": "exec firefox",
"tooltip": false "tooltip": false,
}, },
"custom/files": {
"format": " ", "custom/slack": {
"format": "  ",
"on-click": "slack",
"tooltip": false,
"exec if": "pgrep slack"
},
"custom/files": {
"format": " 󰉋 ",
"on-click": "exec thunar", "on-click": "exec thunar",
"tooltip": false "tooltip": false,
},
"custom/pomo": {
"format": " {} ",
"exec": "/home/nate/source/pomozoro/zig-out/bin/pomozoro",
"return-type": "json",
"on-click": "echo 's' > ~/.local/share/pomozoro/pomopipe",
"on-click-right": "echo 'p' > ~/.local/share/pomozoro/pomopipe",
"on-click-middle": "echo 'r' > ~/.local/share/pomozoro/pomopipe",
// "signal": 8,
}, },
"custom/launcher": { "custom/launcher": {

View File

@ -6,67 +6,110 @@
* *
* =========================================================================== */ * =========================================================================== */
@define-color rosewater #f4dbd6;
@define-color flamingo #f0c6c6;
@define-color pink #f5bde6;
@define-color mauve #c6a0f6;
@define-color red #ed8796;
@define-color maroon #ee99a0;
@define-color peach #f5a97f;
@define-color yellow #eed49f;
@define-color green #a6da95;
@define-color teal #8bd5ca;
@define-color sky #91d7e3;
@define-color sapphire #7dc4e4;
@define-color blue #8aadf4;
@define-color lavender #b7bdf8;
@define-color text #cad3f5;
@define-color subtext1 #b8c0e0;
@define-color subtext0 #a5adcb;
@define-color overlay2 #939ab7;
@define-color overlay1 #8087a2;
@define-color overlay0 #6e738d;
@define-color surface2 #5b6078;
@define-color surface1 #494d64;
@define-color surface0 #363a4f;
@define-color base #24273a;
@define-color mantle #1e2030;
@define-color crust #181926;
/* ----------------------------------------------------------------------------- /* -----------------------------------------------------------------------------
* Keyframes * Keyframes
* -------------------------------------------------------------------------- */ * -------------------------------------------------------------------------- */
/*
Nordic Color Scheme
*/
@define-color nord2 #434c5e;
@define-color nord3 #4c566a;
@define-color nord4 #d8dee9;
@define-color nord8 #88c0d0;
@define-color nord9 #81a1c1;
@define-color nord_cyan #8fbcbb;
@define-color nord_orange #d08770;
@define-color nord_red #bf616a;
@define-color nord_green #a3be8c;
@define-color nord_yellow #ebcb8b;
@keyframes blink-warning { @keyframes blink-warning {
70% { 70% {
color: white; color: @overlay0;
} }
to { to {
color: white; color: @overlay0;
background-color: @nord_orange; background-color: @crust;
} }
} }
@keyframes blink-critical { @keyframes blink-critical {
70% { 70% {
color: white; color: @overlay2;
} }
to { to {
color: white; color: @overlay2;
background-color: @nord_red; background-color: @base;
} }
} }
/* ----------------------------------------------------------------------------- /* -----------------------------------------------------------------------------
* Base styles * Base styles
* -------------------------------------------------------------------------- */ * -------------------------------------------------------------------------- */
/* Reset all styles */ /* Reset all styles */
* { * {
border: none; border: none;
border-radius: 0; border-radius: 0;
min-height: 0; min-height: 0;
margin: 1px; margin: 1px;
padding: 0; padding: 0;
} }
/* The whole bar */ /* The whole bar */
#waybar { #waybar {
background: transparent; background: transparent;
color: @nord4; background-color: transparent;
background-color: @nord3; font-family: Overpass Nerd Font;
font-family: Overpass Nerd Font; font-size: 20px;
font-size: 16px; color: @text;
border-radius: 15px; }
#taskbar {
background: transparent;
}
#taskbar button {
padding-left: 3px;
padding-right: 3px;
margin-left: 3px;
margin-right: 3px;
color: transparent;
border-bottom: 2px solid;
}
#taskbar button.active {
color: @lavender;
}
.modules-left,
.modules-right,
.modules-center {
/* margin: 8px 8px 1px 8px; */
background: transparent;
/* color: @; */
background-color: @base;
border-radius: 25px;
padding: 0px 10px 0px 10px;
border-style: solid;
border-width: 3px;
border-color: @surface0;
} }
/* Every modules */ /* Every modules */
@ -84,8 +127,8 @@ Nordic Color Scheme
#tray, #tray,
#idle_inhibitor, #idle_inhibitor,
#custom-PBPbattery { #custom-PBPbattery {
padding:0.5rem 0.6rem; padding: 0.5rem 0.6rem;
margin: 1px 0px; margin: 1px 0px;
} }
/* ----------------------------------------------------------------------------- /* -----------------------------------------------------------------------------
@ -93,127 +136,179 @@ Nordic Color Scheme
* -------------------------------------------------------------------------- */ * -------------------------------------------------------------------------- */
#battery { #battery {
animation-timing-function: linear; animation-timing-function: linear;
animation-iteration-count: infinite; animation-iteration-count: infinite;
animation-direction: alternate; animation-direction: alternate;
} }
#battery.warning { #battery.warning {
color: @nord_orange; color: @flamingo;
} }
#battery.critical { #battery.critical {
color: @nord_red; color: @red;
} }
#battery.warning.discharging { #battery.warning.discharging {
animation-name: blink-warning; animation-name: blink-warning;
animation-duration: 3s; animation-duration: 3s;
} }
#battery.critical.discharging { #battery.critical.discharging {
animation-name: blink-critical; animation-name: blink-critical;
animation-duration: 2s; animation-duration: 2s;
} }
#cpu.warning { #cpu.warning {
color: @nord_orange; color: @flamingo;
} }
#cpu.critical { #cpu.critical {
color: @nord_red; color: @red;
} }
#memory { #memory {
animation-timing-function: linear; animation-timing-function: linear;
animation-iteration-count: infinite; animation-iteration-count: infinite;
animation-direction: alternate; animation-direction: alternate;
} }
#memory.warning { #memory.warning {
color: @nord_orange; color: @flamingo;
} }
#memory.critical { #memory.critical {
color: @nord_red; color: @red;
animation-name: blink-critical; animation-name: blink-critical;
animation-duration: 2s; animation-duration: 2s;
padding-left:5px; padding-left: 5px;
padding-right:5px; padding-right: 5px;
} }
#mode { #mode {
background: @nord8; background: @overlay0;
border-bottom: 3px transparent; border-bottom: 3px transparent;
color:white; color: @text;
margin-left: 5px; margin-left: 5px;
padding: 7px; margin-right: 5px;
border-radius: 20px;
} }
#network.disconnected { #network.disconnected {
color: @nord_orange; color: @flamingo;
} }
#pulseaudio { #pulseaudio {
padding-top:6px; padding-top: 6px;
} }
#pulseaudio.muted { #pulseaudio.muted {
color: @sky;
color: @nord_cyan;
} }
#temperature.critical { #temperature.critical {
color: @nord_red; color: @red;
} }
#window { #window {
font-weight: bold; font-weight: bold;
} }
#workspaces { #workspaces {
font-size:13px; font-size: 13px;
} }
#workspaces button { #workspaces button {
border-bottom: 3px solid transparent; border-bottom: 3px solid transparent;
margin-bottom: 0px; margin-bottom: 0px;
padding:0px; padding: 0px;
} }
#custom-launcher { #custom-launcher {
color: @nord9; color: @lavenderblush;
}
/* @define-color rosewater #f4dbd6; */
/* @define-color flamingo #f0c6c6; */
/* @define-color pink #f5bde6; */
/* @define-color mauve #c6a0f6; */
/* @define-color red #ed8796; */
/* @define-color maroon #ee99a0; */
/* @define-color peach #f5a97f; */
/* @define-color yellow #eed49f; */
/* @define-color green #a6da95; */
/* @define-color teal #8bd5ca; */
/* @define-color sky #91d7e3; */
/* @define-color sapphire #7dc4e4; */
/* @define-color blue #8aadf4; */
/* @define-color lavender #b7bdf8; */
#custom-signal {
color: @lavender;
padding: 0px 5px 0px 5px;
}
#custom-steam {
color: @teal;
padding: 0px 5px 0px 5px;
} }
#custom-spotify { #custom-spotify {
color: @nord_green; color: @green;
padding: 0px 5px 0px 5px;
} }
#custom-firefox {
color: @yellow;
padding: 0px 5px 0px 5px;
}
#custom-slack {
color: @peach;
padding: 0px 5px 0px 5px;
}
#custom-files {
color: @pink;
padding: 0px 5px 0px 5px;
}
#custom-pomo {
color: @red;
padding: 0px 5px 0px 5px;
}
#wiggle {
animation-name: blink-warning;
}
#workspaces button.focused { #workspaces button.focused {
border-bottom: 3px solid @nord_green; border-bottom: 3px solid @green;
margin-bottom: 1px; margin-bottom: 1px;
padding-left:0; padding-left: 0;
} }
#workspaces button.urgent { #workspaces button.urgent {
border-color: @nord2; border-color: @lavender;
color: @nord_yellow; color: @yellow;
} }
#custom-power { #custom-power {
margin-left:15px; margin-left: 15px;
margin-right:15px; margin-right: 15px;
font-size:15px; font-size: 15px;
color: @nord_orange; color: @flamingo;
} }
#custom-launcher { #custom-launcher {
font-size:15px; font-size: 15px;
margin-left:15px; margin-left: 15px;
margin-right:10px; margin-right: 10px;
} }
#backlight.icon { #backlight.icon {
padding-right:1px; padding-right: 1px;
font-size: 13px; font-size: 13px;
} }

View File

@ -12,6 +12,8 @@ in
}; };
config = lib.mkIf cfg.enable { config = lib.mkIf cfg.enable {
programs.firefox = { programs.firefox = {
# Add pipewire support
# package = (pkgs.wrapFirefox (pkgs.firefox-unwrapped.override { pipewireSupport = true;}) {});
enable = true; enable = true;
profiles = { profiles = {
default = { default = {
@ -22,6 +24,7 @@ in
nur.repos.rycee.firefox-addons.darkreader nur.repos.rycee.firefox-addons.darkreader
nur.repos.rycee.firefox-addons.keepassxc-browser nur.repos.rycee.firefox-addons.keepassxc-browser
nur.repos.crazazy.firefox-addons.ublock-origin nur.repos.crazazy.firefox-addons.ublock-origin
nur.repos.bandithedoge.firefoxAddons.stylus
]; ];
search = { search = {
# Replace default firefox search engine config with this one # Replace default firefox search engine config with this one
@ -33,12 +36,22 @@ in
template = "https://www.startpage.com/sp/search?query={searchTerms}"; template = "https://www.startpage.com/sp/search?query={searchTerms}";
}]; }];
}; };
"Nix Packages" = {
urls = [{
template = "https://search.nixos.org/packages";
params = [
{ name = "type"; value = "packages"; }
{ name = "query"; value = "{searchTerms}"; }
];
}];
icon = "${pkgs.nixos-icons}/share/icons/hicolor/scalable/apps/nix-snowflake.svg";
definedAliases = [ "@np" ];
};
}; };
}; };
settings = { settings = {
"browser.startup.blankWindow" = true; "browser.startup.blankWindow" = true;
"browser.startup.homepage" = "https://www.startpage.com/do/mypage.pl?prfe=11898a1adf7b7dfb587580692f358773a11ca25e993b8e077476641cec033319e15f2449c345f5be919fd0a082015c3e4ed23143bd4337512466c04c2999831a54abca2eaeb42963c63ff064"; "browser.startup.homepage" = "https://www.startpage.com/do/mypage.pl?prfe=11898a1adf7b7dfb587580692f358773a11ca25e993b8e077476641cec033319e15f2449c345f5be919fd0a082015c3e4ed23143bd4337512466c04c2999831a54abca2eaeb42963c63ff064";
"browser.newtabpage.enabled" = false;
"browser.search.region" = "US"; "browser.search.region" = "US";
"browser.search.isUS" = true; "browser.search.isUS" = true;
"distribution.searchplugins.defaultLocale" = "en-US"; "distribution.searchplugins.defaultLocale" = "en-US";
@ -54,7 +67,9 @@ in
"signon.rememberSignon" = false; "signon.rememberSignon" = false;
"extensions.formautofill.creditCards.enabled" = false; "extensions.formautofill.creditCards.enabled" = false;
"extensions.formautofill.addresses.enabled" = false; "extensions.formautofill.addresses.enabled" = false;
# "browser.bookmarks.showMobileBookmarks" = true; "browser.toolbars.bookmarks.visibility" = "always";
# For applying userContent.css - not being used
# "toolkit.legacyUserProfileCustomizations.stylesheets" = true;
# "browser.newtabpage.pinned" = [{ # "browser.newtabpage.pinned" = [{
# title = "NixOS"; # title = "NixOS";
# url = "https://nixos.org"; # url = "https://nixos.org";

View File

@ -1,16 +1,37 @@
{ inputs, outputs, lib, config, pkgs, ... }: { inputs, config, pkgs, ... }:
let let
userName = "nate"; userName = "nate";
fullName = "Nathan Anderson"; fullName = "Nathan Anderson";
email = "n8r@tuta.io"; email = "n8r@tuta.io";
unstable = import inputs.nixpkgs-unstable { system = "x86_64-linux"; config.allowUnfree = true; };
oldstable = import inputs.nixpkgs-23 { system = "x86_64-linux"; config.allowUnfree = true; };
davinciDesktop = pkgs.makeDesktopItem {
name = "davinci-resolve-studio";
desktopName = "Davinci Resolve Studio";
exec = "${oldstable.davinci-resolve-studio}";
};
# overlay-unstable = final: prev: {
# unstable = inputs.nixpkgs-unstable.legacyPackages.x86_64-linux;
# };
# overlay-oldstable = final: prev: {
# pkgs23 = inputs.nixpkgs-23.legacyPackages.x86_64-linux;
# };
# overlay-unstable = final: prev: {
# # unstable = inputs.nixpkgs-unstable.legacyPackages.x86_64-linux;
# unstable = import inputs.nixpkgs-unstable {
# system = "x86_64-linux";
# config = {
# allowUnfreePredicate = (pkg: true);
# allowUnfree = true;
# };
# };
# };
in in
{ {
# nixpkgs.overlays = [ # nixpkgs.overlays = [
# inputs.nur.overlay # overlay-unstable
# ]; # ];
# nixpkgs.config.allowUnfree = true;
# inputs.nixpkgs-stable.config.allowUnfree = true;
imports = [ imports = [
../apps/firefox/firefox.nix ../apps/firefox/firefox.nix
]; ];
@ -27,40 +48,46 @@
firefoxApp.enable = true; firefoxApp.enable = true;
fonts.fontconfig.enable = true; fonts.fontconfig.enable = true;
home.packages = with pkgs; [ home.packages = with pkgs; [
# nur.repos.crazazy.js.eslint # nur.repos.crazazy.js.eslint
# inputs.nixpkgs-stable.legacyPackages.x86_64-linux.corectrl # inputs.nixpkgs-stable.legacyPackages.x86_64-linux.corectrl
chromium
# #
# Dev Tools # Dev Tools
# #
dbeaver dbeaver-bin
cargo helix
kakoune # kakoune
flutter316 # flutter316
docker docker
docker-compose docker-compose
fossil
fnc
jq
python310 python310
nodejs_21
zig
### LSP's ### LSP's
rnix-lsp # Nix LSP nil # Nix LSP
nodePackages_latest.bash-language-server
openscad-lsp openscad-lsp
nodePackages.typescript-language-server
vscode-langservers-extracted # provides eslint, markdown, json, css, and html lsp vscode-langservers-extracted # provides eslint, markdown, json, css, and html lsp
rubyPackages.solargraph python311Packages.python-lsp-server
python310Packages.python-lsp-server # zls
zls
### Misc ### Misc
# android-udev-rules # android-udev-rules
# android-tools # android-tools
# sdkmanager # sdkmanager
usbutils
cli-visualizer
openscad openscad
# #
# Gaming # Gaming
# #
amdgpu_top amdgpu_top
mangohud
r2modman
wine-wayland wine-wayland
webcord webcord
@ -69,79 +96,80 @@
# #
bat bat
duf duf
du-dust
fd fd
fzf fzf
lsd lsd
ripgrep ripgrep
tre-command tre-command
gtop gtop
htop
neofetch
# Normies # Normies
unzip unzip
llpp
nmap
# #
# Photo / Video # Photo / Video
# #
davinci-resolve-studio oldstable.davinci-resolve-studio
davinciDesktop
imv imv
mpv mpv
gimp gimp
ffmpeg ffmpeg
tenacity
yt-dlp
libimobiledevice
ifuse
# #
# Communication # Communication
# #
mumble mumble
slack slack
signal-desktop unstable.signal-desktop
# #
# Other # Other
# #
keepassxc keepassxc
obs-studio obs-studio
unstable.betaflight-configurator
yubioath-flutter
#
# Style
#
catppuccin-kvantum
libsForQt5.qtstyleplugin-kvantum
libsForQt5.qt5ct
# Install fonts # Install fonts
lato
(nerdfonts.override { fonts = [ "Hermit" "Overpass" ]; }) (nerdfonts.override { fonts = [ "Hermit" "Overpass" ]; })
recursive
# # 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 # Home Manager is pretty good at managing dotfiles. The primary way to manage
# plain files is through 'home.file'. # plain files is through 'home.file'.
home.file."${config.xdg.configHome}" = { 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; source = ../../dotfiles;
recursive = true; recursive = true;
# # You can also set the file content immediately.
# ".gradle/gradle.properties".text = ''
# org.gradle.console=verbose
# org.gradle.daemon.idletimeout=3600000
# '';
}; };
# For applying custom styles
# home.file.".mozilla/firefox/default" = {
# source = ../../misc/firefox_styles;
# recursive = true;
# };
# location where stylus data is kept
# /home/nate/.mozilla/firefox/default/storage/default/moz-extension+++77a1d59f-183c-4439-b249-fdae98b7bd7b/idb
# 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 = { home.sessionVariables = {
EDITOR = "kak"; # MANPAGER="sh -c 'col -bx | bat -l man -p'";
BAT_THEME="Catppuccin Macchiato";
EDITOR = "hx";
XDG_CURRENT_DESKTOP="sway"; XDG_CURRENT_DESKTOP="sway";
}; };
@ -150,6 +178,25 @@
enable = true; enable = true;
userEmail = email; userEmail = email;
userName = fullName; userName = fullName;
extraConfig = {
include = { path = "${config.xdg.configHome}/macchiato.gitconfig"; };
init = { defaultBranch = "main"; };
pull = { ff = "only"; };
merge = { conflictStyle="zdiff3"; };
push = { autoSetupRemote="true"; };
delta = { features = "Catppuccin Macchiato"; };
};
delta.enable = true;
};
programs = {
direnv = {
enable = true;
enableZshIntegration = true; # see note on other shells below
nix-direnv.enable = true;
};
bash.enable = true; # see note on other shells below
}; };
# Zsh setup # Zsh setup
@ -157,51 +204,85 @@
enable = true; enable = true;
oh-my-zsh = { oh-my-zsh = {
enable = true; enable = true;
plugins = [ "git" ]; plugins = [ "fossil" "git" ];
theme = "half-life"; theme = "half-life";
}; };
initExtra = '' initExtra = ''
alias ask="nix-shell -p python310Packages.openai --run 'python ~/source/python/chat.py'" eval "$(direnv hook zsh)"
export SSH_AUTH_SOCK=$XDG_RUNTIME_DIR/ssh-agent
fzf_projects() { # fzf_projects() {
DIR=` # DIR=`
fd .git --search-path="$HOME/source/" -H --ignore-file ~/.config/fd-ignore -tdirectory | \ # fd .git --search-path="$HOME/source/" -H --ignore-file ~/.config/fd-ignore -tdirectory | \
xargs dirname | \ # xargs dirname | \
sed 's|$HOME||g' | \ # sed 's|$HOME||g' | \
sort | \ # sort | \
uniq | \ # 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 | \ # 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/" # xargs printf "$HOME/%s/"
` # `
cd $DIR # cd $DIR
# }
# alias p="fzf_projects ~/source/"
yt-audio() {
nix-shell -p yt-dlp --run "yt-dlp -x $1 --audio-format mp3"
} }
alias p="fzf_projects source/"
# Better Unix Aliases
# alias ask="nix-shell -p python310Packages.openai --run 'python ~/source/python/chat.py'"
alias ls="lsd" alias ls="lsd"
alias l="lsd --almost-all --long" alias l="lsd --almost-all --long"
alias llm="lsd --timesort --long" alias llm="lsd --timesort --long"
alias lS="lsd --oneline --classic" alias lS="lsd --oneline --classic"
alias lt="lsd --tree --depth=2" alias lt="lsd --tree --depth=2"
alias grep="rg"
alias cat="bat --paging=never"
alias rm="rm -i"
alias adaptiveoff="swaymsg 'output * adaptive_sync off'"
alias adaptiveon="swaymsg 'output * adaptive_sync on'"
''; '';
}; };
qt = { qt = {
enable = true; enable = true;
platformTheme = "gtk"; platformTheme.name = "qtct";
style.name = "adwaita-dark"; style.name = "kvantum";
style.package = pkgs.adwaita-qt; };
gtk = {
enable = true;
cursorTheme = {
package = pkgs.catppuccin-cursors.macchiatoLavender;
name = "Catppuccin-Macchiato-Lavender-Cursors";
}; };
gtk = { iconTheme = {
enable = true; package = pkgs.catppuccin-papirus-folders;
cursorTheme.package = pkgs.catppuccin-cursors; name = "Papirus-Dark";
cursorTheme.name = "latteFlamingo";
theme = {
name = "Catppuccin-Latte-Pink";
package = pkgs.catppuccin-gtk.override {
accents = [ "pink" ];
tweaks = [ ];
variant = "latte";
};
};
}; };
theme = {
name = "catppuccin-macchiato-lavender-compact+rimless";
package = pkgs.catppuccin-gtk.override {
accents = [ "lavender" ];
size = "compact";
tweaks = [ "rimless" ];
variant = "macchiato";
};
};
};
# Symlink in gtk and kvantum theme to ~/.config
xdg.configFile = {
"gtk-4.0/assets".source = "${config.gtk.theme.package}/share/themes/${config.gtk.theme.name}/gtk-4.0/assets";
"gtk-4.0/gtk.css".source = "${config.gtk.theme.package}/share/themes/${config.gtk.theme.name}/gtk-4.0/gtk.css";
"gtk-4.0/gtk-dark.css".source = "${config.gtk.theme.package}/share/themes/${config.gtk.theme.name}/gtk-4.0/gtk-dark.css";
"Kvantum/kvantum.kvconfig".text = ''
[General]
theme=Catppuccin-Frappe-Blue
'';
"Kvantum/Catppuccin-Frappe-Blue".source = "${pkgs.catppuccin-kvantum}/share/Kvantum/Catppuccin-Frappe-Blue";
};
home.file.".icons/default/index.theme".text = ''
[icon theme]
Inherits=Catppuccin-Macchiato-Lavender-Cursors
'';
} }

View File

@ -25,6 +25,7 @@
config = lib.mkIf config.swaywm.enable { config = lib.mkIf config.swaywm.enable {
programs.sway.enable = true; programs.sway.enable = true;
programs.sway.wrapperFeatures.gtk = true;
nixpkgs.config.allowUnfree = config.swaywm.useNonFree; nixpkgs.config.allowUnfree = config.swaywm.useNonFree;
# For R2ModMan # For R2ModMan
@ -65,30 +66,33 @@
sway-contrib.grimshot sway-contrib.grimshot
libnotify libnotify
mako mako
man-pages
man-pages-posix
ncspot ncspot
networkmanagerapplet networkmanagerapplet
pavucontrol pavucontrol
slurp slurp
syncthingtray
swaylock swaylock
swayidle swayidle
swww swaybg
# swww
tailscale-systray
wl-clipboard wl-clipboard
waybar waybar
wdisplays wdisplays
wofi wofi
xdg-utils xdg-utils
zsh zsh
lxqt.lxqt-policykit
# Fonts # Fonts
] ]
config.swaywm.systemPackages config.swaywm.systemPackages
# (lib.mkIf config.swaywm.installGaming [
# pkgs.lutris
# ])
]; ];
environment.variables.QT_STYLE_OVERRIDE = "kvantum";
# environment.loginShellInit = '' # adds additional man pages
# [[ "$(tty)" == /dev/tty1 ]] && sway documentation.dev.enable = true;
# '';
# Thunar config # Thunar config
programs.thunar = { programs.thunar = {
@ -103,44 +107,54 @@
programs.zsh.enable = true; programs.zsh.enable = true;
programs.steam.enable = config.swaywm.installGaming; programs.steam.enable = config.swaywm.installGaming;
programs.gamemode.enable = true;
programs.adb.enable = true; programs.adb.enable = true;
# kdeconnect setup
programs.kdeconnect.enable = true; programs.kdeconnect.enable = true;
# service file to start the sshAgent
programs.ssh.startAgent = true;
### ###
## Services ## Services
### ###
services.gvfs.enable = true; # thunar functionalities virtualisation.docker.enable = true;
services.blueman.enable = true;
services.flatpak.enable = true;
services.gvfs.enable = true; # thunar mount, trash, etc
services.tumbler.enable = true; # thunar thumbnails
services.openssh.enable = true; services.openssh.enable = true;
services.dbus.enable = true; services.dbus.enable = true;
services.syncthing.enable = true;
services.gnome.gnome-keyring.enable = true;
services.usbmuxd.enable = true;
services.tailscale = {
enable = true;
openFirewall = true;
};
# For betaflight configurator
services.udev.extraRules = ''
# DFU (Internal bootloader for STM32 and AT32 MCUs)
SUBSYSTEM=="usb", ATTRS{idVendor}=="2e3c", ATTRS{idProduct}=="df11", MODE="0664", GROUP="dialout"
SUBSYSTEM=="usb", ATTRS{idVendor}=="0483", ATTRS{idProduct}=="df11", MODE="0664", GROUP="dialout"
'';
# For yubioath desktop
services.pcscd.enable = true;
# Audio # Audio
security.rtkit.enable = true; security.rtkit.enable = true;
services.pipewire = { services.pipewire = {
enable = true; enable = true;
alsa.enable = true; alsa.enable = true;
# alsa.support32Bit = true;
pulse.enable = true; pulse.enable = true;
wireplumber.enable = true; wireplumber.enable = true;
}; };
sound.enable = false; sound.enable = false;
### ###
## Misc ## Misc
### ###
# Necessary for home-manager sway setup # Necessary for home-manager sway setup
security.polkit.enable = true; security.polkit.enable = true;
# services.xserver.enable = true;
# services.xserver.displayManager.defaultSession = "sway";
# services.xserver.displayManager.gdm.enable = true;
# services.xserver.displayManager.gdm.wayland = true;
# services.xserver.displayManager.gdm.settings = {
# greeter.includeAll = false;
# greeter.include = "nate";
# };
services.greetd = { services.greetd = {
enable = true; enable = true;
settings = rec { settings = rec {
@ -152,21 +166,21 @@
}; };
}; };
services.xserver.videoDrivers = [ "amdgpu" ]; # services.xserver.videoDrivers = [ "amdgpu" ];
# Enable HIP # Enable HIP
systemd.tmpfiles.rules = [ systemd.tmpfiles.rules = [
"L+ /opt/rocm/hip - - - - ${pkgs.rocmPackages.clr}" "L+ /opt/rocm/hip - - - - ${pkgs.rocmPackages.clr}"
]; ];
# services.xserver.videoDrivers = [ "amdgpu-pro" ]; hardware.bluetooth.enable = true; # enables support for Bluetooth
hardware.bluetooth.powerOnBoot = true; # powers up the default Bluetooth controller on boot
hardware.opengl = { hardware.opengl = {
# Mesa # Mesa
enable = true; # enable = true;
# Vulkan # Vulkan
driSupport = true; # driSupport = true;
# Rocm support and vulkan drivers # Rocm support and vulkan drivers
extraPackages = with pkgs; [ extraPackages = with pkgs; [
rocmPackages.clr.icd rocmPackages.clr.icd
amdvlk
]; ];
}; };
}; };

View File

@ -46,6 +46,10 @@ in
"audio" "audio"
# For android # For android
"adbusers" "adbusers"
# For serial interfaces
"dialout"
# For docker
"docker"
]; ];
}) })
]; ];

View File

@ -28,6 +28,12 @@
fsType = "ext4"; fsType = "ext4";
}; };
fileSystems."/home/nate/kage" = {
device = "192.168.1.169:/kage";
fsType = "nfs";
options = [ "nfsvers=4.2" "x-systemd.automount" "noauto" "x-systemd.idle-timeout=600" ]; # lazy mounting and auto disconnect after 600 seconds
};
swapDevices = [ ]; swapDevices = [ ];
# Enables DHCP on each ethernet and wireless interface. In case of scripted networking # Enables DHCP on each ethernet and wireless interface. In case of scripted networking

View File

@ -0,0 +1,80 @@
{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 = {
# Add pipewire support
package = (pkgs.wrapFirefox (pkgs.firefox-unwrapped.override { pipewireSupport = true;}) {});
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}";
}];
};
"Nix Packages" = {
urls = [{
template = "https://search.nixos.org/packages";
params = [
{ name = "type"; value = "packages"; }
{ name = "query"; value = "{searchTerms}"; }
];
}];
icon = "${pkgs.nixos-icons}/share/icons/hicolor/scalable/apps/nix-snowflake.svg";
definedAliases = [ "@np" ];
};
};
};
settings = {
"browser.startup.blankWindow" = true;
"browser.startup.homepage" = "https://www.startpage.com/do/mypage.pl?prfe=11898a1adf7b7dfb587580692f358773a11ca25e993b8e077476641cec033319e15f2449c345f5be919fd0a082015c3e4ed23143bd4337512466c04c2999831a54abca2eaeb42963c63ff064";
"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.toolbars.bookmarks.visibility" = "always";
# "browser.newtabpage.pinned" = [{
# title = "NixOS";
# url = "https://nixos.org";
# }];
};
};
};
};
};
}

View File

@ -0,0 +1,53 @@
{ lib, config, pkgs, ... }:
let
cfg = config.main_user;
in
{
options.main_user = {
enable = lib.mkEnableOption "enable user module";
isDesktopUser = lib.mkOption {
default = false;
example = true;
description = "Add additional user groups for desktop users";
};
userName = lib.mkOption {
default = "mainuser";
description = "username";
};
};
config = lib.mkIf cfg.enable {
users.users.${cfg.userName} = lib.mkMerge [
{
isNormalUser = true;
initialPassword = "password";
description = "main user";
shell = pkgs.zsh;
}
(lib.mkIf (!cfg.isDesktopUser) {
extraGroups = [
"wheel"
"networkmanager"
cfg.userName
];
})
(lib.mkIf cfg.isDesktopUser {
extraGroups = [
"wheel"
"networkmanager"
"corectrl"
cfg.userName
"video"
"audio"
# For android
"adbusers"
];
})
];
};
}

28
shared/nix-gc.nix Normal file
View File

@ -0,0 +1,28 @@
{lib, pkgs, config, ...}:
let
cfg = config.nixGc;
in
{
options.nixGc = {
enable = lib.mkEnableOption "enable nix gc default settings";
};
config = lib.mkIf cfg.enable {
# 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,193 @@
{ config, lib, pkgs, timeZone, ... }:
let
srvConfig = config.serverConfig;
in
{
options.serverConfig= {
userName = lib.mkOption {
type = lib.types.str;
description = "Main username for system";
};
hostName = lib.mkOption {
type = lib.types.str;
description = "Hostname for system";
};
hostId = lib.mkOption {
type = lib.types.str;
description = "Host ID";
};
email = lib.mkOption {
type = lib.types.str;
description = "Email for server box";
};
sshEnable = lib.mkOption {
default = false;
description = "Whether to enable ssh server";
};
nfsEnable = lib.mkOption {
default = false;
};
nfsRoot = lib.mkOption {
default = "/nfs_export";
type = lib.types.str;
};
nfsExports = lib.mkOption {
default = [];
description = "List of file paths provided as strings to the nfs exports";
};
nfsIpExport = lib.mkOption {
type = lib.types.str;
description = "Where to export the shares to i.e. 192.168.0.0/24 (export to local network)";
};
syncthingEnable = lib.mkOption {
default = false;
description = "Whether to enable syncThing host on this machine";
};
caldavEnable = lib.mkOption {
default = false;
description = "Enable the caldav server service (radicale)";
};
};
imports = [
./modules/user/main_user.nix
];
config = {
# Enable flakes feature
nix.settings.experimental-features = [
"nix-command" "flakes"
];
boot.loader.systemd-boot.enable = true;
boot.loader.efi.canTouchEfiVariables = true;
networking = {
hostId = srvConfig.hostId;
hostName = srvConfig.hostName; # Define your hostname.
# Pick only one of the below networking options.
# networking.wireless.enable = true; # Enables wireless support via wpa_supplicant.
networkmanager.enable = true; # Easiest to use and most distros use this by default.
};
time.timeZone = timeZone;
main_user = {
enable = true;
userName = srvConfig.userName;
isDesktopUser = false;
};
environment.systemPackages = with pkgs; [
docker
docker-compose
zsh
];
programs.zsh.enable = true;
services.openssh = lib.mkIf srvConfig.sshEnable {
enable = true;
};
# nfs options breakdown: link for export options https://linux.die.net/man/5/exports
# rw - default read write
# sync - wait until requests are saved to disk to respond to clients, safer but slower
# no_subtree_check -
services.nfs.server = lib.mkIf srvConfig.nfsEnable {
enable = true;
exports = ''
${srvConfig.nfsRoot} ${srvConfig.nfsIpExport}(rw,fsid=root,no_subtree_check)
${lib.concatMapStringsSep "\n" (n: "${srvConfig.nfsRoot}${n} ${srvConfig.nfsIpExport}(rw,sync,no_subtree_check,all_squash,anongid=105,anonuid=1005)") srvConfig.nfsExports}
'';
};
# nfs port TODO make dependant on option enabled
# 2049 - nfs
# 8384 - syncthing
# 5352 - caldav server radicale
networking.firewall.allowedTCPPorts = [ 80 2049 5232 8384 ];
users.groups.kage = {
gid = 105;
};
users.users.kage = {
uid = 1005;
isSystemUser = true;
initialPassword = "password";
description = "user to manage nfs and syncthing tasks";
group = "kage";
extraGroups = [
"users"
];
};
services.syncthing = lib.mkIf srvConfig.syncthingEnable {
enable = true;
user = "kage";
group = "users";
dataDir = "${srvConfig.nfsRoot}/kage/syncthing";
configDir = "${srvConfig.nfsRoot}/kage/.config/syncthing";
# overrideDevices = true; # overrides any devices added or deleted through the WebUI
# overrideFolders = true; # overrides any folders added or deleted through the WebUI
openDefaultPorts = true;
relay.enable = true;
guiAddress = "0.0.0.0:8384";
# settings = {
# devices = {
# # "supernote" = { id = "DEVICE-ID-GOES-HERE"; };
# # "pixel" = { id = "DEVICE-ID-GOES-HERE2"; };
# # "winmax" = { id = "id3"; };
# # "nix-box" = { id = "id4"; };
# };
# folders = {
# "supernote" = { # Name of folder in Syncthing, also the folder ID
# path = "${srvConfig.nfsRoot}/kage/syncthing/supernote"; # Which folder to add to Syncthing
# # devices = [ "supernote" "pixel" ]; # Which devices to share the folder with
# };
# "web" = { # Name of folder in Syncthing, also the folder ID
# path = "${srvConfig.nfsRoot}/kage/syncthing/web"; # Which folder to add to Syncthing
# # devices = [ "supernote" "pixel" "winmax" "nix-box" ]; # Which devices to share the folder with
# };
# };
# };
};
services.radicale = lib.mkIf srvConfig.caldavEnable {
enable = true;
settings = {
# Run server port 5232
server = {
hosts = [ "0.0.0.0:5232" "[::]:5232" ];
};
auth = {
type = "htpasswd";
htpasswd_filename = "/home/luci/.config/radicale/rad_pass";
htpasswd_encryption = "bcrypt";
};
};
};
systemd.timers."pixel-backups" = {
wantedBy = [ "timers.target" ];
timerConfig = {
OnCalendar = "daily";
};
};
systemd.services."pixel-backups" = {
script = ''
# Move files older than 90 days to the backups file
find /nfs_export/kage/syncthing/pixel_images/ -type f -mtime +90 | xargs -I {} mv {} /nfs_export/kage/Personal/Nate/Phone_Images
'';
serviceConfig = {
Type = "oneshot";
User = "root";
};
};
# networking.firewall.allowedTCPPorts = [ ... ];
# networking.firewall.allowedUDPPorts = [ ... ];
system.stateVersion = "23.11"; # Did you read the comment?
};
}