Merge branch 'master' of ssh://git.joshuabell.xyz:3032/dotfiles

This commit is contained in:
RingOfStorms (Joshua Bell) 2025-03-18 14:36:30 -05:00
commit ed9ad75b61
98 changed files with 3198 additions and 81 deletions

778
flake.lock generated
View file

@ -1,6 +1,621 @@
{
"nodes": {
"agenix": {
"inputs": {
"darwin": "darwin",
"home-manager": "home-manager_2",
"nixpkgs": [
"common",
"ragenix",
"nixpkgs"
],
"systems": "systems_2"
},
"locked": {
"lastModified": 1736955230,
"narHash": "sha256-uenf8fv2eG5bKM8C/UvFaiJMZ4IpUFaQxk9OH5t/1gA=",
"owner": "ryantm",
"repo": "agenix",
"rev": "e600439ec4c273cf11e06fe4d9d906fb98fa097c",
"type": "github"
},
"original": {
"owner": "ryantm",
"repo": "agenix",
"type": "github"
}
},
"aquamarine": {
"inputs": {
"hyprutils": [
"common",
"hyprland",
"hyprutils"
],
"hyprwayland-scanner": [
"common",
"hyprland",
"hyprwayland-scanner"
],
"nixpkgs": [
"common",
"hyprland",
"nixpkgs"
],
"systems": [
"common",
"hyprland",
"systems"
]
},
"locked": {
"lastModified": 1742213273,
"narHash": "sha256-0l0vDb4anfsBu1rOs94bC73Hub+xEivgBAo6QXl2MmU=",
"owner": "hyprwm",
"repo": "aquamarine",
"rev": "484b732195cc53f4536ce4bd59a5c6402b1e7ccf",
"type": "github"
},
"original": {
"owner": "hyprwm",
"repo": "aquamarine",
"type": "github"
}
},
"common": {
"inputs": {
"cosmic": "cosmic",
"home-manager": "home-manager",
"hyprland": "hyprland",
"ragenix": "ragenix"
},
"locked": {
"lastModified": 1,
"narHash": "sha256-0uw2ufJKp8bok7PveHuzOTF3CIO46fZgWLQLCJmU6zo=",
"path": "./common",
"type": "path"
},
"original": {
"path": "./common",
"type": "path"
}
},
"cosmic": {
"inputs": {
"flake-compat": "flake-compat",
"nixpkgs": "nixpkgs",
"nixpkgs-stable": "nixpkgs-stable"
},
"locked": {
"lastModified": 1742209773,
"narHash": "sha256-+d9zNzXHK/qQnWfFrjFxmCNJLm1JShsLNNViJxnKIpI=",
"owner": "lilyinstarlight",
"repo": "nixos-cosmic",
"rev": "0b2d5feae25fe6176b5844a689712a3a13954f12",
"type": "github"
},
"original": {
"owner": "lilyinstarlight",
"repo": "nixos-cosmic",
"type": "github"
}
},
"crane": {
"locked": {
"lastModified": 1741481578,
"narHash": "sha256-JBTSyJFQdO3V8cgcL08VaBUByEU6P5kXbTJN6R0PFQo=",
"owner": "ipetkov",
"repo": "crane",
"rev": "bb1c9567c43e4434f54e9481eb4b8e8e0d50f0b5",
"type": "github"
},
"original": {
"owner": "ipetkov",
"repo": "crane",
"type": "github"
}
},
"darwin": {
"inputs": {
"nixpkgs": [
"common",
"ragenix",
"agenix",
"nixpkgs"
]
},
"locked": {
"lastModified": 1700795494,
"narHash": "sha256-gzGLZSiOhf155FW7262kdHo2YDeugp3VuIFb4/GGng0=",
"owner": "lnl7",
"repo": "nix-darwin",
"rev": "4b9b83d5a92e8c1fbfd8eb27eda375908c11ec4d",
"type": "github"
},
"original": {
"owner": "lnl7",
"ref": "master",
"repo": "nix-darwin",
"type": "github"
}
},
"flake-compat": {
"flake": false,
"locked": {
"lastModified": 1717312683,
"narHash": "sha256-FrlieJH50AuvagamEvWMIE6D2OAnERuDboFDYAED/dE=",
"owner": "nix-community",
"repo": "flake-compat",
"rev": "38fd3954cf65ce6faf3d0d45cd26059e059f07ea",
"type": "github"
},
"original": {
"owner": "nix-community",
"repo": "flake-compat",
"type": "github"
}
},
"flake-compat_2": {
"flake": false,
"locked": {
"lastModified": 1696426674,
"narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=",
"owner": "edolstra",
"repo": "flake-compat",
"rev": "0f9255e01c2351cc7d116c072cb317785dd33b33",
"type": "github"
},
"original": {
"owner": "edolstra",
"repo": "flake-compat",
"type": "github"
}
},
"flake-utils": {
"inputs": {
"systems": "systems_3"
},
"locked": {
"lastModified": 1731533236,
"narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=",
"owner": "numtide",
"repo": "flake-utils",
"rev": "11707dc2f618dd54ca8739b309ec4fc024de578b",
"type": "github"
},
"original": {
"owner": "numtide",
"repo": "flake-utils",
"type": "github"
}
},
"gitignore": {
"inputs": {
"nixpkgs": [
"common",
"hyprland",
"pre-commit-hooks",
"nixpkgs"
]
},
"locked": {
"lastModified": 1709087332,
"narHash": "sha256-HG2cCnktfHsKV0s4XW83gU3F57gaTljL9KNSuG6bnQs=",
"owner": "hercules-ci",
"repo": "gitignore.nix",
"rev": "637db329424fd7e46cf4185293b9cc8c88c95394",
"type": "github"
},
"original": {
"owner": "hercules-ci",
"repo": "gitignore.nix",
"type": "github"
}
},
"home-manager": {
"inputs": {
"nixpkgs": "nixpkgs_2"
},
"locked": {
"lastModified": 1742234739,
"narHash": "sha256-zFL6zsf/5OztR1NSNQF33dvS1fL/BzVUjabZq4qrtY4=",
"owner": "rycee",
"repo": "home-manager",
"rev": "f6af7280a3390e65c2ad8fd059cdc303426cbd59",
"type": "github"
},
"original": {
"owner": "rycee",
"ref": "release-24.11",
"repo": "home-manager",
"type": "github"
}
},
"home-manager_2": {
"inputs": {
"nixpkgs": [
"common",
"ragenix",
"agenix",
"nixpkgs"
]
},
"locked": {
"lastModified": 1703113217,
"narHash": "sha256-7ulcXOk63TIT2lVDSExj7XzFx09LpdSAPtvgtM7yQPE=",
"owner": "nix-community",
"repo": "home-manager",
"rev": "3bfaacf46133c037bb356193bd2f1765d9dc82c1",
"type": "github"
},
"original": {
"owner": "nix-community",
"repo": "home-manager",
"type": "github"
}
},
"hyprcursor": {
"inputs": {
"hyprlang": [
"common",
"hyprland",
"hyprlang"
],
"nixpkgs": [
"common",
"hyprland",
"nixpkgs"
],
"systems": [
"common",
"hyprland",
"systems"
]
},
"locked": {
"lastModified": 1742215578,
"narHash": "sha256-zfs71PXVVPEe56WEyNi2TJQPs0wabU4WAlq0XV7GcdE=",
"owner": "hyprwm",
"repo": "hyprcursor",
"rev": "2fd36421c21aa87e2fe3bee11067540ae612f719",
"type": "github"
},
"original": {
"owner": "hyprwm",
"repo": "hyprcursor",
"type": "github"
}
},
"hyprgraphics": {
"inputs": {
"hyprutils": [
"common",
"hyprland",
"hyprutils"
],
"nixpkgs": [
"common",
"hyprland",
"nixpkgs"
],
"systems": [
"common",
"hyprland",
"systems"
]
},
"locked": {
"lastModified": 1739049071,
"narHash": "sha256-3+7TpXMrbsUXSwgr5VAKAnmkzMb6JO+Rvc9XRb5NMg4=",
"owner": "hyprwm",
"repo": "hyprgraphics",
"rev": "175c6b29b6ff82100539e7c4363a35a02c74dd73",
"type": "github"
},
"original": {
"owner": "hyprwm",
"repo": "hyprgraphics",
"type": "github"
}
},
"hyprland": {
"inputs": {
"aquamarine": "aquamarine",
"hyprcursor": "hyprcursor",
"hyprgraphics": "hyprgraphics",
"hyprland-protocols": "hyprland-protocols",
"hyprland-qtutils": "hyprland-qtutils",
"hyprlang": "hyprlang",
"hyprutils": "hyprutils",
"hyprwayland-scanner": "hyprwayland-scanner",
"nixpkgs": "nixpkgs_3",
"pre-commit-hooks": "pre-commit-hooks",
"systems": "systems",
"xdph": "xdph"
},
"locked": {
"lastModified": 1742297408,
"narHash": "sha256-Xn3vzG7dhQlK26B0vUeModxYC8UD/6OhOi+5vqYV6Y4=",
"owner": "hyprwm",
"repo": "Hyprland",
"rev": "cca0f48b74e87f86244f5773c42d9ade84683f3b",
"type": "github"
},
"original": {
"owner": "hyprwm",
"repo": "Hyprland",
"type": "github"
}
},
"hyprland-protocols": {
"inputs": {
"nixpkgs": [
"common",
"hyprland",
"nixpkgs"
],
"systems": [
"common",
"hyprland",
"systems"
]
},
"locked": {
"lastModified": 1738422629,
"narHash": "sha256-5v+bv75wJWvahyM2xcMTSNNxmV8a7hb01Eey5zYnBJw=",
"owner": "hyprwm",
"repo": "hyprland-protocols",
"rev": "755aef8dab49d0fc4663c715fa4ad221b2aedaed",
"type": "github"
},
"original": {
"owner": "hyprwm",
"repo": "hyprland-protocols",
"type": "github"
}
},
"hyprland-qt-support": {
"inputs": {
"hyprlang": [
"common",
"hyprland",
"hyprland-qtutils",
"hyprlang"
],
"nixpkgs": [
"common",
"hyprland",
"hyprland-qtutils",
"nixpkgs"
],
"systems": [
"common",
"hyprland",
"hyprland-qtutils",
"systems"
]
},
"locked": {
"lastModified": 1737634706,
"narHash": "sha256-nGCibkfsXz7ARx5R+SnisRtMq21IQIhazp6viBU8I/A=",
"owner": "hyprwm",
"repo": "hyprland-qt-support",
"rev": "8810df502cdee755993cb803eba7b23f189db795",
"type": "github"
},
"original": {
"owner": "hyprwm",
"repo": "hyprland-qt-support",
"type": "github"
}
},
"hyprland-qtutils": {
"inputs": {
"hyprland-qt-support": "hyprland-qt-support",
"hyprlang": [
"common",
"hyprland",
"hyprlang"
],
"hyprutils": [
"common",
"hyprland",
"hyprland-qtutils",
"hyprlang",
"hyprutils"
],
"nixpkgs": [
"common",
"hyprland",
"nixpkgs"
],
"systems": [
"common",
"hyprland",
"systems"
]
},
"locked": {
"lastModified": 1739048983,
"narHash": "sha256-REhTcXq4qs3B3cCDtLlYDz0GZvmsBSh947Ub6pQWGTQ=",
"owner": "hyprwm",
"repo": "hyprland-qtutils",
"rev": "3504a293c8f8db4127cb0f7cfc1a318ffb4316f8",
"type": "github"
},
"original": {
"owner": "hyprwm",
"repo": "hyprland-qtutils",
"type": "github"
}
},
"hyprlang": {
"inputs": {
"hyprutils": [
"common",
"hyprland",
"hyprutils"
],
"nixpkgs": [
"common",
"hyprland",
"nixpkgs"
],
"systems": [
"common",
"hyprland",
"systems"
]
},
"locked": {
"lastModified": 1741191527,
"narHash": "sha256-kM+11Nch47Xwfgtw2EpRitJuORy4miwoMuRi5tyMBDY=",
"owner": "hyprwm",
"repo": "hyprlang",
"rev": "72df3861f1197e41b078faa3e38eedd60e00018d",
"type": "github"
},
"original": {
"owner": "hyprwm",
"repo": "hyprlang",
"type": "github"
}
},
"hyprutils": {
"inputs": {
"nixpkgs": [
"common",
"hyprland",
"nixpkgs"
],
"systems": [
"common",
"hyprland",
"systems"
]
},
"locked": {
"lastModified": 1741534688,
"narHash": "sha256-EV3945SnjOCuRVbGRghsWx/9D89FyshnSO1Q6/TuQ14=",
"owner": "hyprwm",
"repo": "hyprutils",
"rev": "dd1f720cbc2dbb3c71167c9598045dd3261d27b3",
"type": "github"
},
"original": {
"owner": "hyprwm",
"repo": "hyprutils",
"type": "github"
}
},
"hyprwayland-scanner": {
"inputs": {
"nixpkgs": [
"common",
"hyprland",
"nixpkgs"
],
"systems": [
"common",
"hyprland",
"systems"
]
},
"locked": {
"lastModified": 1739870480,
"narHash": "sha256-SiDN5BGxa/1hAsqhgJsS03C3t2QrLgBT8u+ENJ0Qzwc=",
"owner": "hyprwm",
"repo": "hyprwayland-scanner",
"rev": "206367a08dc5ac4ba7ad31bdca391d098082e64b",
"type": "github"
},
"original": {
"owner": "hyprwm",
"repo": "hyprwayland-scanner",
"type": "github"
}
},
"nixpkgs": {
"locked": {
"lastModified": 1742069588,
"narHash": "sha256-C7jVfohcGzdZRF6DO+ybyG/sqpo1h6bZi9T56sxLy+k=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "c80f6a7e10b39afcc1894e02ef785b1ad0b0d7e5",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixos-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs-stable": {
"locked": {
"lastModified": 1742136038,
"narHash": "sha256-DDe16FJk18sadknQKKG/9FbwEro7A57tg9vB5kxZ8kY=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "a1185f4064c18a5db37c5c84e5638c78b46e3341",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixos-24.11",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs_2": {
"locked": {
"lastModified": 1731755305,
"narHash": "sha256-v5P3dk5JdiT+4x69ZaB18B8+Rcu3TIOrcdG4uEX7WZ8=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "057f63b6dc1a2c67301286152eb5af20747a9cb4",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixos-24.11",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs_3": {
"locked": {
"lastModified": 1742069588,
"narHash": "sha256-C7jVfohcGzdZRF6DO+ybyG/sqpo1h6bZi9T56sxLy+k=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "c80f6a7e10b39afcc1894e02ef785b1ad0b0d7e5",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixos-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs_4": {
"locked": {
"lastModified": 1741379970,
"narHash": "sha256-Wh7esNh7G24qYleLvgOSY/7HlDUzWaL/n4qzlBePpiw=",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "36fd87baa9083f34f7f5027900b62ee6d09b1f2f",
"type": "github"
},
"original": {
"owner": "nixos",
"ref": "nixos-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs_5": {
"locked": {
"lastModified": 1741173522,
"narHash": "sha256-k7VSqvv0r1r53nUI/IfPHCppkUAddeXn843YlAC5DR0=",
@ -16,9 +631,170 @@
"type": "github"
}
},
"pre-commit-hooks": {
"inputs": {
"flake-compat": "flake-compat_2",
"gitignore": "gitignore",
"nixpkgs": [
"common",
"hyprland",
"nixpkgs"
]
},
"locked": {
"lastModified": 1742058297,
"narHash": "sha256-b4SZc6TkKw8WQQssbN5O2DaCEzmFfvSTPYHlx/SFW9Y=",
"owner": "cachix",
"repo": "git-hooks.nix",
"rev": "59f17850021620cd348ad2e9c0c64f4e6325ce2a",
"type": "github"
},
"original": {
"owner": "cachix",
"repo": "git-hooks.nix",
"type": "github"
}
},
"ragenix": {
"inputs": {
"agenix": "agenix",
"crane": "crane",
"flake-utils": "flake-utils",
"nixpkgs": "nixpkgs_4",
"rust-overlay": "rust-overlay"
},
"locked": {
"lastModified": 1741508717,
"narHash": "sha256-iQf1WdNxaApOFHIx4RLMRZ4f8g+8Xp0Z1/E/Mz2rLxY=",
"owner": "yaxitech",
"repo": "ragenix",
"rev": "2a2bea99d74927e54adf53cbf113219def67d5c9",
"type": "github"
},
"original": {
"owner": "yaxitech",
"repo": "ragenix",
"type": "github"
}
},
"root": {
"inputs": {
"nixpkgs": "nixpkgs"
"common": "common",
"nixpkgs": "nixpkgs_5"
}
},
"rust-overlay": {
"inputs": {
"nixpkgs": [
"common",
"ragenix",
"nixpkgs"
]
},
"locked": {
"lastModified": 1741400194,
"narHash": "sha256-tEpgT+q5KlGjHSm8MnINgTPErEl8YDzX3Eps8PVc09g=",
"owner": "oxalica",
"repo": "rust-overlay",
"rev": "16b6045a232fea0e9e4c69e55a6e269607dd8e3f",
"type": "github"
},
"original": {
"owner": "oxalica",
"repo": "rust-overlay",
"type": "github"
}
},
"systems": {
"locked": {
"lastModified": 1689347949,
"narHash": "sha256-12tWmuL2zgBgZkdoB6qXZsgJEH9LR3oUgpaQq2RbI80=",
"owner": "nix-systems",
"repo": "default-linux",
"rev": "31732fcf5e8fea42e59c2488ad31a0e651500f68",
"type": "github"
},
"original": {
"owner": "nix-systems",
"repo": "default-linux",
"type": "github"
}
},
"systems_2": {
"locked": {
"lastModified": 1681028828,
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
"owner": "nix-systems",
"repo": "default",
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
"type": "github"
},
"original": {
"owner": "nix-systems",
"repo": "default",
"type": "github"
}
},
"systems_3": {
"locked": {
"lastModified": 1681028828,
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
"owner": "nix-systems",
"repo": "default",
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
"type": "github"
},
"original": {
"owner": "nix-systems",
"repo": "default",
"type": "github"
}
},
"xdph": {
"inputs": {
"hyprland-protocols": [
"common",
"hyprland",
"hyprland-protocols"
],
"hyprlang": [
"common",
"hyprland",
"hyprlang"
],
"hyprutils": [
"common",
"hyprland",
"hyprutils"
],
"hyprwayland-scanner": [
"common",
"hyprland",
"hyprwayland-scanner"
],
"nixpkgs": [
"common",
"hyprland",
"nixpkgs"
],
"systems": [
"common",
"hyprland",
"systems"
]
},
"locked": {
"lastModified": 1741934139,
"narHash": "sha256-ZhTcTH9FoeAtbPfWGrhkH7RjLJZ7GeF18nygLAMR+WE=",
"owner": "hyprwm",
"repo": "xdg-desktop-portal-hyprland",
"rev": "150b0b6f52bb422a1b232a53698606fe0320dde0",
"type": "github"
},
"original": {
"owner": "hyprwm",
"repo": "xdg-desktop-portal-hyprland",
"type": "github"
}
}
},

103
flake.nix
View file

@ -1,20 +1,20 @@
{
inputs = {
nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
common.url = "path:./common";
};
outputs =
{
self,
nixpkgs,
common,
...
}@inputs:
}:
let
# Utilities
inherit (nixpkgs) lib;
# Define the systems to support (all Linux systems exposed by nixpkgs)
systems = lib.intersectLists lib.systems.flakeExposed lib.platforms.linux;
forAllSystems = lib.genAttrs systems;
# Define the systems to support: https://github.com/NixOS/nixpkgs/blob/master/lib/systems/flake-systems.nix
forAllSystems = lib.genAttrs lib.systems.flakeExposed;
# Create a mapping from system to corresponding nixpkgs : https://nixos.wiki/wiki/Overlays#In_a_Nix_flake
nixpkgsFor = forAllSystems (system: nixpkgs.legacyPackages.${system});
in
@ -23,71 +23,7 @@
system:
let
pkgs = nixpkgsFor.${system};
mod_worktrees = pkgs.writeShellScriptBin "mod_worktrees" ''
# Get all local and remote mod_* branches, removing lines with '+'
branches=$(git branch -a | grep -E 'mod_' | grep -v '^\s*+' | sed 's/^[* ]*//; s/^remotes\/origin\///')
# Remove duplicates and sort
branches=$(echo "$branches" | sort -u)
for branch in $branches; do
# Skip master or other non-mod branches
if [[ ! "$branch" =~ ^mod_ ]]; then
continue
fi
# Derive module name (remove mod_ prefix)
module_name="''${branch#mod_}"
module_path="modules/$module_name"
# Check if worktree already exists
if [ ! -d "$module_path" ]; then
echo "Adding worktree for $branch in $module_path"
(git worktree add "$module_path" "$branch" 2>/dev/null) &
else
(
cd "$module_path"
git fetch origin "$branch" >/dev/null 2>&1
if ! git diff --quiet HEAD "origin/$branch"; then
echo "Updates available for $branch in $module_path"
git pull origin "$branch"
fi
cd - >/dev/null
) &
fi
done
# Wait for all background processes to finish
wait
# Check for and remove orphaned module directories
if [ -d "modules" ]; then
for dir in modules/*; do
if [ -d "$dir" ]; then
module_name="$(basename "$dir")"
if ! echo "$branches" | grep -q "^mod_$module_name$"; then
echo "Removing orphaned module directory: $dir"
(git worktree remove --force "$dir") &
fi
fi
done
fi
wait
'';
mod_status = pkgs.writeShellScriptBin "mod_status" ''
cwd=$(pwd)
root=$(git rev-parse --show-toplevel)
for dir in "$root"/modules/*/; do
cd "$dir"
echo
echo " >> $(basename "$dir"):"
git status
done
cd "$cwd"
'';
linode_deploy = pkgs.writeShellScriptBin "linode_deploy" ''
deploy_linode = pkgs.writeShellScriptBin "deploy_linode" ''
cwd=$(pwd)
root=$(git rev-parse --show-toplevel)
if [ ! -d "$root/hosts/linode/$1" ]; then
@ -95,7 +31,19 @@
exit 1
fi
cd "$root/hosts/linode/$1"
echo "Deploying $(basename "$(pwd)")..."
echo "Deploying linode $(basename "$(pwd)")..."
deploy
cd "$cwd"
'';
deploy_oracle = pkgs.writeShellScriptBin "deploy_oracle" ''
cwd=$(pwd)
root=$(git rev-parse --show-toplevel)
if [ ! -d "$root/hosts/oracle/$1" ]; then
echo "Host $1 does not exist"
exit 1
fi
cd "$root/hosts/oracle/$1"
echo "Deploying oracle $(basename "$(pwd)")..."
deploy
cd "$cwd"
'';
@ -103,20 +51,15 @@
{
default = pkgs.mkShell {
nativeBuildInputs = with pkgs; [
mod_worktrees
mod_status
linode_deploy
deploy_oracle
deploy_linode
deploy-rs
];
# shellHook = ''
# if [ -z "''${SKIP_MOD_WORKTREES:-}" ]; then
# mod_worktrees &
# fi
# '';
};
}
);
nixosModules = common.nixosModules;
homeManagerModules = common.homeManagerModules;
};
}

View file

@ -0,0 +1,9 @@
(
output: "all",
source: Color(Single((0.0, 0.0, 0.0))),
filter_by_theme: false,
rotation_frequency: 900,
filter_method: Lanczos,
scaling_mode: Zoom,
sampling_method: Alphanumeric,
)

View file

@ -0,0 +1,9 @@
(
output: "eDP-1",
source: Color(Single((0.0, 0.0, 0.0))),
filter_by_theme: false,
rotation_frequency: 900,
filter_method: Lanczos,
scaling_mode: Zoom,
sampling_method: Alphanumeric,
)

View file

@ -0,0 +1 @@
true

View file

@ -0,0 +1 @@
false

View file

@ -0,0 +1 @@
PerWorkspace

View file

@ -0,0 +1 @@
true

View file

@ -0,0 +1,9 @@
(
state: Enabled,
scroll_config: Some((
method: None,
natural_scroll: Some(true),
scroll_button: None,
scroll_factor: None,
)),
)

View file

@ -0,0 +1,9 @@
(
rules: "",
model: "pc104",
layout: "us",
variant: "",
options: Some("caps:escape"),
repeat_delay: 600,
repeat_rate: 25,
)

View file

@ -0,0 +1,9 @@
(
view: List,
folders_first: true,
show_hidden: false,
icon_sizes: (
list: 100,
grid: 100,
),
)

View file

@ -0,0 +1 @@
None

View file

@ -0,0 +1 @@
None

View file

@ -0,0 +1 @@
Bottom

View file

@ -0,0 +1 @@
false

View file

@ -0,0 +1 @@
None

View file

@ -0,0 +1 @@
ThemeDefault

View file

@ -0,0 +1 @@
Top

View file

@ -0,0 +1 @@
0

View file

@ -0,0 +1 @@
"Dock"

View file

@ -0,0 +1 @@
1.0

View file

@ -0,0 +1 @@
All

View file

@ -0,0 +1 @@
0

View file

@ -0,0 +1,7 @@
Some([
"com.system76.CosmicPanelLauncherButton",
"com.system76.CosmicPanelWorkspacesButton",
"com.system76.CosmicPanelAppButton",
"com.system76.CosmicAppList",
"com.system76.CosmicAppletMinimize",
])

View file

@ -0,0 +1 @@
L

View file

@ -0,0 +1 @@
None

View file

@ -0,0 +1 @@
None

View file

@ -0,0 +1 @@
4

View file

@ -0,0 +1 @@
Bottom

View file

@ -0,0 +1 @@
false

View file

@ -0,0 +1,5 @@
Some((
wait_time: 1000,
transition_time: 200,
handle_size: 4,
))

View file

@ -0,0 +1 @@
ThemeDefault

View file

@ -0,0 +1 @@
Top

View file

@ -0,0 +1 @@
0

View file

@ -0,0 +1 @@
"Panel"

View file

@ -0,0 +1 @@
1.0

View file

@ -0,0 +1 @@
All

View file

@ -0,0 +1 @@
0

View file

@ -0,0 +1,3 @@
Some([
"com.system76.CosmicAppletTime",
])

View file

@ -0,0 +1,11 @@
Some(([], [
"com.system76.CosmicAppletInputSources",
"com.system76.CosmicAppletStatusArea",
"com.system76.CosmicAppletTiling",
"com.system76.CosmicAppletAudio",
"com.system76.CosmicAppletNetwork",
"com.system76.CosmicAppletBattery",
"com.system76.CosmicAppletNotifications",
"com.system76.CosmicAppletBluetooth",
"com.system76.CosmicAppletPower",
]))

View file

@ -0,0 +1 @@
XS

View file

@ -0,0 +1 @@
None

View file

@ -0,0 +1 @@
None

View file

@ -0,0 +1 @@
2

View file

@ -0,0 +1,3 @@
[
"Panel",
]

View file

@ -0,0 +1,71 @@
// https://github.com/pop-os/cosmic-settings/blob/master/cosmic-settings/src/pages/input/keyboard/shortcuts/mod.rs#L460-L550
// For action types
{
(
modifiers: [
Super,
],
key: "l",
): Focus(Right),
(
modifiers: [
Super,
],
key: "j",
): NextWorkspace,
(
modifiers: [
Super,
],
key: "h",
): Focus(Left),
(
modifiers: [
Super,
],
key: "k",
): PreviousWorkspace,
(
modifiers: [
Super,
],
key: "Return",
): Spawn("alacritty"),
(
modifiers: [
Super,
],
key: "space",
description: Some("launcher"),
): System(Launcher),
(
modifiers: [
Super,
],
): System(WorkspaceOverview),
(
modifiers: [
Super,
],
key: "Right",
): Disable,
(
modifiers: [
Super,
],
key: "Down",
): Disable,
(
modifiers: [
Super,
],
key: "Left",
): Disable,
(
modifiers: [
Super,
],
key: "Up",
): Disable,
}

View file

@ -0,0 +1,3 @@
[
Single((0.0, 0.0, 0.0)),
]

View file

@ -0,0 +1,8 @@
(
radius_0: (0.0, 0.0, 0.0, 0.0),
radius_xs: (2.0, 2.0, 2.0, 2.0),
radius_s: (2.0, 2.0, 2.0, 2.0),
radius_m: (2.0, 2.0, 2.0, 2.0),
radius_l: (2.0, 2.0, 2.0, 2.0),
radius_xl: (2.0, 2.0, 2.0, 2.0),
)

View file

@ -0,0 +1 @@
(0, 4)

View file

@ -0,0 +1,12 @@
(
space_none: 0,
space_xxxs: 4,
space_xxs: 4,
space_xs: 8,
space_s: 8,
space_m: 16,
space_l: 24,
space_xl: 32,
space_xxl: 48,
space_xxxl: 64,
)

View file

@ -0,0 +1,74 @@
(
base: (
red: 0.5803922,
green: 0.92156863,
blue: 0.92156863,
alpha: 1.0,
),
hover: (
red: 0.5576471,
green: 0.8305882,
blue: 0.8305882,
alpha: 1.0,
),
pressed: (
red: 0.38431373,
green: 0.55490196,
blue: 0.55490196,
alpha: 1.0,
),
selected: (
red: 0.5576471,
green: 0.8305882,
blue: 0.8305882,
alpha: 1.0,
),
selected_text: (
red: 0.5803922,
green: 0.92156863,
blue: 0.92156863,
alpha: 1.0,
),
focus: (
red: 0.5803922,
green: 0.92156863,
blue: 0.92156863,
alpha: 1.0,
),
divider: (
red: 0.0,
green: 0.0,
blue: 0.0,
alpha: 1.0,
),
on: (
red: 0.0,
green: 0.0,
blue: 0.0,
alpha: 1.0,
),
disabled: (
red: 0.5803922,
green: 0.92156863,
blue: 0.92156863,
alpha: 1.0,
),
on_disabled: (
red: 0.2901961,
green: 0.46078432,
blue: 0.46078432,
alpha: 1.0,
),
border: (
red: 0.5803922,
green: 0.92156863,
blue: 0.92156863,
alpha: 1.0,
),
disabled_border: (
red: 0.5803922,
green: 0.92156863,
blue: 0.92156863,
alpha: 0.5,
),
)

View file

@ -0,0 +1,74 @@
(
base: (
red: 0.5803922,
green: 0.92156863,
blue: 0.92156863,
alpha: 1.0,
),
hover: (
red: 0.5576471,
green: 0.8305882,
blue: 0.8305882,
alpha: 1.0,
),
pressed: (
red: 0.38431373,
green: 0.55490196,
blue: 0.55490196,
alpha: 1.0,
),
selected: (
red: 0.5576471,
green: 0.8305882,
blue: 0.8305882,
alpha: 1.0,
),
selected_text: (
red: 0.5803922,
green: 0.92156863,
blue: 0.92156863,
alpha: 1.0,
),
focus: (
red: 0.5803922,
green: 0.92156863,
blue: 0.92156863,
alpha: 1.0,
),
divider: (
red: 0.105882354,
green: 0.105882354,
blue: 0.105882354,
alpha: 1.0,
),
on: (
red: 0.0,
green: 0.0,
blue: 0.0,
alpha: 1.0,
),
disabled: (
red: 0.5803922,
green: 0.92156863,
blue: 0.92156863,
alpha: 1.0,
),
on_disabled: (
red: 0.0,
green: 0.0,
blue: 0.0,
alpha: 0.5,
),
border: (
red: 0.5803922,
green: 0.92156863,
blue: 0.92156863,
alpha: 1.0,
),
disabled_border: (
red: 0.5803922,
green: 0.92156863,
blue: 0.92156863,
alpha: 0.5,
),
)

View file

@ -0,0 +1,100 @@
(
base: (
red: 0.105882354,
green: 0.105882354,
blue: 0.105882354,
alpha: 1.0,
),
component: (
base: (
red: 0.18219745,
green: 0.18219745,
blue: 0.18219745,
alpha: 1.0,
),
hover: (
red: 0.2639777,
green: 0.2639777,
blue: 0.2639777,
alpha: 1.0,
),
pressed: (
red: 0.34575796,
green: 0.34575796,
blue: 0.34575796,
alpha: 1.0,
),
selected: (
red: 0.2639777,
green: 0.2639777,
blue: 0.2639777,
alpha: 1.0,
),
selected_text: (
red: 0.5803922,
green: 0.92156863,
blue: 0.92156863,
alpha: 1.0,
),
focus: (
red: 0.5803922,
green: 0.92156863,
blue: 0.92156863,
alpha: 1.0,
),
divider: (
red: 0.7532969,
green: 0.7532969,
blue: 0.75329685,
alpha: 0.2,
),
on: (
red: 0.7532969,
green: 0.7532969,
blue: 0.75329685,
alpha: 1.0,
),
disabled: (
red: 0.18219745,
green: 0.18219745,
blue: 0.18219745,
alpha: 1.0,
),
on_disabled: (
red: 0.46774718,
green: 0.46774718,
blue: 0.46774715,
alpha: 1.0,
),
border: (
red: 0.7764706,
green: 0.7764706,
blue: 0.7764706,
alpha: 1.0,
),
disabled_border: (
red: 0.7764706,
green: 0.7764706,
blue: 0.7764706,
alpha: 0.5,
),
),
divider: (
red: 0.2662247,
green: 0.2662247,
blue: 0.2662247,
alpha: 1.0,
),
on: (
red: 0.90759414,
green: 0.9075942,
blue: 0.90759414,
alpha: 1.0,
),
small_widget: (
red: 0.15292811,
green: 0.15292811,
blue: 0.15292808,
alpha: 0.25,
),
)

View file

@ -0,0 +1,74 @@
(
base: (
red: 0.67058825,
green: 0.67058825,
blue: 0.67058825,
alpha: 0.25,
),
hover: (
red: 0.42862746,
green: 0.42862746,
blue: 0.42862746,
alpha: 0.4,
),
pressed: (
red: 0.2282353,
green: 0.2282353,
blue: 0.2282353,
alpha: 0.625,
),
selected: (
red: 0.42862746,
green: 0.42862746,
blue: 0.42862746,
alpha: 0.4,
),
selected_text: (
red: 0.5803922,
green: 0.92156863,
blue: 0.92156863,
alpha: 1.0,
),
focus: (
red: 0.5803922,
green: 0.92156863,
blue: 0.92156863,
alpha: 1.0,
),
divider: (
red: 0.7532969,
green: 0.7532969,
blue: 0.75329685,
alpha: 0.2,
),
on: (
red: 0.7532969,
green: 0.7532969,
blue: 0.75329685,
alpha: 1.0,
),
disabled: (
red: 0.51056147,
green: 0.51056147,
blue: 0.51056147,
alpha: 0.34375,
),
on_disabled: (
red: 0.5107661,
green: 0.5107661,
blue: 0.5107661,
alpha: 0.625,
),
border: (
red: 0.7764706,
green: 0.7764706,
blue: 0.7764706,
alpha: 1.0,
),
disabled_border: (
red: 0.7764706,
green: 0.7764706,
blue: 0.7764706,
alpha: 0.5,
),
)

View file

@ -0,0 +1,8 @@
(
radius_0: (0.0, 0.0, 0.0, 0.0),
radius_xs: (2.0, 2.0, 2.0, 2.0),
radius_s: (2.0, 2.0, 2.0, 2.0),
radius_m: (2.0, 2.0, 2.0, 2.0),
radius_l: (2.0, 2.0, 2.0, 2.0),
radius_xl: (2.0, 2.0, 2.0, 2.0),
)

View file

@ -0,0 +1,74 @@
(
base: (
red: 1.0,
green: 0.70980394,
blue: 0.70980394,
alpha: 1.0,
),
hover: (
red: 0.8933333,
green: 0.66117644,
blue: 0.66117644,
alpha: 1.0,
),
pressed: (
red: 0.59411764,
green: 0.4490196,
blue: 0.4490196,
alpha: 1.0,
),
selected: (
red: 0.8933333,
green: 0.66117644,
blue: 0.66117644,
alpha: 1.0,
),
selected_text: (
red: 0.5803922,
green: 0.92156863,
blue: 0.92156863,
alpha: 1.0,
),
focus: (
red: 0.5803922,
green: 0.92156863,
blue: 0.92156863,
alpha: 1.0,
),
divider: (
red: 0.0,
green: 0.0,
blue: 0.0,
alpha: 1.0,
),
on: (
red: 0.0,
green: 0.0,
blue: 0.0,
alpha: 1.0,
),
disabled: (
red: 1.0,
green: 0.70980394,
blue: 0.70980394,
alpha: 1.0,
),
on_disabled: (
red: 0.5,
green: 0.35490197,
blue: 0.35490197,
alpha: 1.0,
),
border: (
red: 1.0,
green: 0.70980394,
blue: 0.70980394,
alpha: 1.0,
),
disabled_border: (
red: 1.0,
green: 0.70980394,
blue: 0.70980394,
alpha: 0.5,
),
)

View file

@ -0,0 +1,74 @@
(
base: (
red: 1.0,
green: 0.70980394,
blue: 0.70980394,
alpha: 1.0,
),
hover: (
red: 0.8933333,
green: 0.66117644,
blue: 0.66117644,
alpha: 1.0,
),
pressed: (
red: 0.59411764,
green: 0.4490196,
blue: 0.4490196,
alpha: 1.0,
),
selected: (
red: 0.8933333,
green: 0.66117644,
blue: 0.66117644,
alpha: 1.0,
),
selected_text: (
red: 0.5803922,
green: 0.92156863,
blue: 0.92156863,
alpha: 1.0,
),
focus: (
red: 0.5803922,
green: 0.92156863,
blue: 0.92156863,
alpha: 1.0,
),
divider: (
red: 0.105882354,
green: 0.105882354,
blue: 0.105882354,
alpha: 1.0,
),
on: (
red: 0.0,
green: 0.0,
blue: 0.0,
alpha: 1.0,
),
disabled: (
red: 1.0,
green: 0.70980394,
blue: 0.70980394,
alpha: 1.0,
),
on_disabled: (
red: 0.0,
green: 0.0,
blue: 0.0,
alpha: 0.5,
),
border: (
red: 1.0,
green: 0.70980394,
blue: 0.70980394,
alpha: 1.0,
),
disabled_border: (
red: 1.0,
green: 0.70980394,
blue: 0.70980394,
alpha: 0.5,
),
)

View file

@ -0,0 +1 @@
(0, 4)

View file

@ -0,0 +1,74 @@
(
base: (
red: 0.0,
green: 0.0,
blue: 0.0,
alpha: 0.0,
),
hover: (
red: 0.46666667,
green: 0.46666667,
blue: 0.46666667,
alpha: 0.2,
),
pressed: (
red: 0.1882353,
green: 0.1882353,
blue: 0.1882353,
alpha: 0.5,
),
selected: (
red: 0.46666667,
green: 0.46666667,
blue: 0.46666667,
alpha: 0.2,
),
selected_text: (
red: 0.5803922,
green: 0.92156863,
blue: 0.92156863,
alpha: 1.0,
),
focus: (
red: 0.5803922,
green: 0.92156863,
blue: 0.92156863,
alpha: 1.0,
),
divider: (
red: 0.7764706,
green: 0.7764706,
blue: 0.7764706,
alpha: 0.2,
),
on: (
red: 0.7764706,
green: 0.7764706,
blue: 0.7764706,
alpha: 1.0,
),
disabled: (
red: 0.0,
green: 0.0,
blue: 0.0,
alpha: 0.0,
),
on_disabled: (
red: 0.3882353,
green: 0.3882353,
blue: 0.3882353,
alpha: 0.5,
),
border: (
red: 0.7764706,
green: 0.7764706,
blue: 0.7764706,
alpha: 1.0,
),
disabled_border: (
red: 0.7764706,
green: 0.7764706,
blue: 0.7764706,
alpha: 0.5,
),
)

View file

@ -0,0 +1,74 @@
(
base: (
red: 0.0,
green: 0.0,
blue: 0.0,
alpha: 0.0,
),
hover: (
red: 0.0,
green: 0.0,
blue: 0.0,
alpha: 0.0,
),
pressed: (
red: 0.0,
green: 0.0,
blue: 0.0,
alpha: 0.0,
),
selected: (
red: 0.0,
green: 0.0,
blue: 0.0,
alpha: 0.0,
),
selected_text: (
red: 0.5803922,
green: 0.92156863,
blue: 0.92156863,
alpha: 1.0,
),
focus: (
red: 0.5803922,
green: 0.92156863,
blue: 0.92156863,
alpha: 1.0,
),
divider: (
red: 0.5803922,
green: 0.92156863,
blue: 0.92156863,
alpha: 0.2,
),
on: (
red: 0.5803922,
green: 0.92156863,
blue: 0.92156863,
alpha: 1.0,
),
disabled: (
red: 0.0,
green: 0.0,
blue: 0.0,
alpha: 0.0,
),
on_disabled: (
red: 0.2901961,
green: 0.46078432,
blue: 0.46078432,
alpha: 0.5,
),
border: (
red: 0.7764706,
green: 0.7764706,
blue: 0.7764706,
alpha: 1.0,
),
disabled_border: (
red: 0.7764706,
green: 0.7764706,
blue: 0.7764706,
alpha: 0.5,
),
)

View file

@ -0,0 +1,100 @@
(
base: (
red: 0.15292811,
green: 0.15292811,
blue: 0.15292808,
alpha: 1.0,
),
component: (
base: (
red: 0.21220893,
green: 0.2122089,
blue: 0.2122089,
alpha: 1.0,
),
hover: (
red: 0.29098803,
green: 0.290988,
blue: 0.290988,
alpha: 1.0,
),
pressed: (
red: 0.36976713,
green: 0.36976713,
blue: 0.36976713,
alpha: 1.0,
),
selected: (
red: 0.29098803,
green: 0.290988,
blue: 0.290988,
alpha: 1.0,
),
selected_text: (
red: 0.5803922,
green: 0.92156863,
blue: 0.92156863,
alpha: 1.0,
),
focus: (
red: 0.5803922,
green: 0.92156863,
blue: 0.92156863,
alpha: 1.0,
),
divider: (
red: 0.7913618,
green: 0.7913618,
blue: 0.7913618,
alpha: 0.2,
),
on: (
red: 0.7913618,
green: 0.7913618,
blue: 0.7913618,
alpha: 1.0,
),
disabled: (
red: 0.21220893,
green: 0.2122089,
blue: 0.2122089,
alpha: 1.0,
),
on_disabled: (
red: 0.5017854,
green: 0.50178534,
blue: 0.50178534,
alpha: 1.0,
),
border: (
red: 0.7764706,
green: 0.7764706,
blue: 0.7764706,
alpha: 1.0,
),
disabled_border: (
red: 0.7764706,
green: 0.7764706,
blue: 0.7764706,
alpha: 0.5,
),
),
divider: (
red: 0.31702772,
green: 0.31702772,
blue: 0.3170277,
alpha: 1.0,
),
on: (
red: 0.97342616,
green: 0.97342616,
blue: 0.97342604,
alpha: 1.0,
),
small_widget: (
red: 0.20212594,
green: 0.20212597,
blue: 0.20212597,
alpha: 0.25,
),
)

View file

@ -0,0 +1,100 @@
(
base: (
red: 0.20212594,
green: 0.20212597,
blue: 0.20212597,
alpha: 1.0,
),
component: (
base: (
red: 0.23260304,
green: 0.23260307,
blue: 0.23260304,
alpha: 1.0,
),
hover: (
red: 0.30934274,
green: 0.30934277,
blue: 0.30934274,
alpha: 1.0,
),
pressed: (
red: 0.38608244,
green: 0.38608247,
blue: 0.38608244,
alpha: 1.0,
),
selected: (
red: 0.30934274,
green: 0.30934277,
blue: 0.30934274,
alpha: 1.0,
),
selected_text: (
red: 0.5803922,
green: 0.92156863,
blue: 0.92156863,
alpha: 1.0,
),
focus: (
red: 0.5803922,
green: 0.92156863,
blue: 0.92156863,
alpha: 1.0,
),
divider: (
red: 0.81693083,
green: 0.8169309,
blue: 0.8169309,
alpha: 0.2,
),
on: (
red: 0.81693083,
green: 0.8169309,
blue: 0.8169309,
alpha: 1.0,
),
disabled: (
red: 0.23260304,
green: 0.23260307,
blue: 0.23260304,
alpha: 1.0,
),
on_disabled: (
red: 0.5247669,
green: 0.524767,
blue: 0.524767,
alpha: 1.0,
),
border: (
red: 0.7764706,
green: 0.7764706,
blue: 0.7764706,
alpha: 1.0,
),
disabled_border: (
red: 0.7764706,
green: 0.7764706,
blue: 0.7764706,
alpha: 0.5,
),
),
divider: (
red: 0.3174277,
green: 0.31742772,
blue: 0.3174277,
alpha: 1.0,
),
on: (
red: 0.7786347,
green: 0.7786347,
blue: 0.77863467,
alpha: 1.0,
),
small_widget: (
red: 0.2532908,
green: 0.25329086,
blue: 0.2532908,
alpha: 0.25,
),
)

View file

@ -0,0 +1,12 @@
(
space_none: 0,
space_xxxs: 4,
space_xxs: 4,
space_xs: 8,
space_s: 8,
space_m: 16,
space_l: 24,
space_xl: 32,
space_xxl: 48,
space_xxxl: 64,
)

View file

@ -0,0 +1,74 @@
(
base: (
red: 0.6745098,
green: 0.96862745,
blue: 0.8235294,
alpha: 1.0,
),
hover: (
red: 0.63294125,
green: 0.86823535,
blue: 0.75215685,
alpha: 1.0,
),
pressed: (
red: 0.43137255,
green: 0.57843137,
blue: 0.5058824,
alpha: 1.0,
),
selected: (
red: 0.63294125,
green: 0.86823535,
blue: 0.75215685,
alpha: 1.0,
),
selected_text: (
red: 0.5803922,
green: 0.92156863,
blue: 0.92156863,
alpha: 1.0,
),
focus: (
red: 0.5803922,
green: 0.92156863,
blue: 0.92156863,
alpha: 1.0,
),
divider: (
red: 0.0,
green: 0.0,
blue: 0.0,
alpha: 1.0,
),
on: (
red: 0.0,
green: 0.0,
blue: 0.0,
alpha: 1.0,
),
disabled: (
red: 0.6745098,
green: 0.96862745,
blue: 0.8235294,
alpha: 1.0,
),
on_disabled: (
red: 0.3372549,
green: 0.48431373,
blue: 0.4117647,
alpha: 1.0,
),
border: (
red: 0.6745098,
green: 0.96862745,
blue: 0.8235294,
alpha: 1.0,
),
disabled_border: (
red: 0.6745098,
green: 0.96862745,
blue: 0.8235294,
alpha: 0.5,
),
)

View file

@ -0,0 +1,74 @@
(
base: (
red: 0.0,
green: 0.0,
blue: 0.0,
alpha: 0.0,
),
hover: (
red: 0.46666667,
green: 0.46666667,
blue: 0.46666667,
alpha: 0.2,
),
pressed: (
red: 0.1882353,
green: 0.1882353,
blue: 0.1882353,
alpha: 0.5,
),
selected: (
red: 0.46666667,
green: 0.46666667,
blue: 0.46666667,
alpha: 0.2,
),
selected_text: (
red: 0.5803922,
green: 0.92156863,
blue: 0.92156863,
alpha: 1.0,
),
focus: (
red: 0.5803922,
green: 0.92156863,
blue: 0.92156863,
alpha: 1.0,
),
divider: (
red: 0.5803922,
green: 0.92156863,
blue: 0.92156863,
alpha: 0.2,
),
on: (
red: 0.5803922,
green: 0.92156863,
blue: 0.92156863,
alpha: 1.0,
),
disabled: (
red: 0.0,
green: 0.0,
blue: 0.0,
alpha: 0.0,
),
on_disabled: (
red: 0.2901961,
green: 0.46078432,
blue: 0.46078432,
alpha: 0.5,
),
border: (
red: 0.7764706,
green: 0.7764706,
blue: 0.7764706,
alpha: 1.0,
),
disabled_border: (
red: 0.7764706,
green: 0.7764706,
blue: 0.7764706,
alpha: 0.5,
),
)

View file

@ -0,0 +1,74 @@
(
base: (
red: 1.0,
green: 0.94509804,
blue: 0.61960787,
alpha: 1.0,
),
hover: (
red: 0.8933333,
green: 0.8494117,
blue: 0.58901966,
alpha: 1.0,
),
pressed: (
red: 0.59411764,
green: 0.56666666,
blue: 0.40392157,
alpha: 1.0,
),
selected: (
red: 0.8933333,
green: 0.8494117,
blue: 0.58901966,
alpha: 1.0,
),
selected_text: (
red: 0.5803922,
green: 0.92156863,
blue: 0.92156863,
alpha: 1.0,
),
focus: (
red: 0.5803922,
green: 0.92156863,
blue: 0.92156863,
alpha: 1.0,
),
divider: (
red: 0.0,
green: 0.0,
blue: 0.0,
alpha: 1.0,
),
on: (
red: 0.0,
green: 0.0,
blue: 0.0,
alpha: 1.0,
),
disabled: (
red: 1.0,
green: 0.94509804,
blue: 0.61960787,
alpha: 1.0,
),
on_disabled: (
red: 0.5,
green: 0.47254902,
blue: 0.30980393,
alpha: 1.0,
),
border: (
red: 1.0,
green: 0.94509804,
blue: 0.61960787,
alpha: 1.0,
),
disabled_border: (
red: 1.0,
green: 0.94509804,
blue: 0.61960787,
alpha: 0.5,
),
)

View file

@ -0,0 +1,74 @@
(
base: (
red: 1.0,
green: 0.94509804,
blue: 0.61960787,
alpha: 1.0,
),
hover: (
red: 0.8933333,
green: 0.8494117,
blue: 0.58901966,
alpha: 1.0,
),
pressed: (
red: 0.59411764,
green: 0.56666666,
blue: 0.40392157,
alpha: 1.0,
),
selected: (
red: 0.8933333,
green: 0.8494117,
blue: 0.58901966,
alpha: 1.0,
),
selected_text: (
red: 0.5803922,
green: 0.92156863,
blue: 0.92156863,
alpha: 1.0,
),
focus: (
red: 0.5803922,
green: 0.92156863,
blue: 0.92156863,
alpha: 1.0,
),
divider: (
red: 1.0,
green: 1.0,
blue: 1.0,
alpha: 1.0,
),
on: (
red: 0.0,
green: 0.0,
blue: 0.0,
alpha: 1.0,
),
disabled: (
red: 1.0,
green: 0.94509804,
blue: 0.61960787,
alpha: 1.0,
),
on_disabled: (
red: 0.0,
green: 0.0,
blue: 0.0,
alpha: 0.5,
),
border: (
red: 1.0,
green: 0.94509804,
blue: 0.61960787,
alpha: 1.0,
),
disabled_border: (
red: 1.0,
green: 0.94509804,
blue: 0.61960787,
alpha: 0.5,
),
)

View file

@ -0,0 +1,8 @@
(
radius_0: (0.0, 0.0, 0.0, 0.0),
radius_xs: (2.0, 2.0, 2.0, 2.0),
radius_s: (2.0, 2.0, 2.0, 2.0),
radius_m: (2.0, 2.0, 2.0, 2.0),
radius_l: (2.0, 2.0, 2.0, 2.0),
radius_xl: (2.0, 2.0, 2.0, 2.0),
)

View file

@ -0,0 +1 @@
(0, 4)

View file

@ -0,0 +1,12 @@
(
space_none: 0,
space_xxxs: 4,
space_xxs: 4,
space_xs: 8,
space_s: 8,
space_m: 16,
space_l: 24,
space_xl: 32,
space_xxl: 48,
space_xxxl: 64,
)

View file

@ -0,0 +1,8 @@
(
radius_0: (0.0, 0.0, 0.0, 0.0),
radius_xs: (2.0, 2.0, 2.0, 2.0),
radius_s: (2.0, 2.0, 2.0, 2.0),
radius_m: (2.0, 2.0, 2.0, 2.0),
radius_l: (2.0, 2.0, 2.0, 2.0),
radius_xl: (2.0, 2.0, 2.0, 2.0),
)

View file

@ -0,0 +1 @@
(0, 4)

View file

@ -0,0 +1,12 @@
(
space_none: 0,
space_xxxs: 4,
space_xxs: 4,
space_xs: 8,
space_s: 8,
space_m: 16,
space_l: 24,
space_xl: 32,
space_xxl: 48,
space_xxxl: 64,
)

View file

@ -0,0 +1 @@
Compact

View file

@ -0,0 +1 @@
Compact

79
todo/de_cosmic/flake.lock generated Normal file
View file

@ -0,0 +1,79 @@
{
"nodes": {
"cosmic": {
"inputs": {
"flake-compat": "flake-compat",
"nixpkgs": "nixpkgs",
"nixpkgs-stable": "nixpkgs-stable"
},
"locked": {
"lastModified": 1738041275,
"narHash": "sha256-4Oqq357Q//Ra5qV9PdPLMkdH0uFFxy1stQF8hTe8xEM=",
"owner": "lilyinstarlight",
"repo": "nixos-cosmic",
"rev": "36eabddc2d033f4fd31c53570db7e1e21591cba3",
"type": "github"
},
"original": {
"owner": "lilyinstarlight",
"repo": "nixos-cosmic",
"type": "github"
}
},
"flake-compat": {
"flake": false,
"locked": {
"lastModified": 1717312683,
"narHash": "sha256-FrlieJH50AuvagamEvWMIE6D2OAnERuDboFDYAED/dE=",
"owner": "nix-community",
"repo": "flake-compat",
"rev": "38fd3954cf65ce6faf3d0d45cd26059e059f07ea",
"type": "github"
},
"original": {
"owner": "nix-community",
"repo": "flake-compat",
"type": "github"
}
},
"nixpkgs": {
"locked": {
"lastModified": 1737885589,
"narHash": "sha256-Zf0hSrtzaM1DEz8//+Xs51k/wdSajticVrATqDrfQjg=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "852ff1d9e153d8875a83602e03fdef8a63f0ecf8",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixos-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs-stable": {
"locked": {
"lastModified": 1737885640,
"narHash": "sha256-GFzPxJzTd1rPIVD4IW+GwJlyGwBDV1Tj5FLYwDQQ9sM=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "4e96537f163fad24ed9eb317798a79afc85b51b7",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixos-24.11",
"repo": "nixpkgs",
"type": "github"
}
},
"root": {
"inputs": {
"cosmic": "cosmic"
}
}
},
"root": "root",
"version": 7
}

88
todo/de_cosmic/flake.nix Normal file
View file

@ -0,0 +1,88 @@
{
inputs = {
cosmic.url = "github:lilyinstarlight/nixos-cosmic";
};
outputs =
{
cosmic,
...
}:
{
nixosModules = {
default =
{
config,
lib,
pkgs,
...
}:
let
cosmicConfigDir = ./config;
cosmicFiles = builtins.attrNames (builtins.readDir cosmicConfigDir);
cosmicConfigFiles = map (fileName: {
name = "cosmic/${fileName}";
value = {
source = "${cosmicConfigDir}/${fileName}";
# mode = "0644";
};
}) cosmicFiles;
cosmicConfigFilesAttrs = builtins.listToAttrs cosmicConfigFiles;
in
with lib;
{
options.mods.de_cosmic = {
users = mkOption {
type = types.listOf types.str;
description = "Users to apply cosmic DE settings to.";
default = (
lib.optionals (config.mods.common.primaryUser != null) [ config.mods.common.primaryUser ]
);
};
};
imports = [
cosmic.nixosModules.default
];
config = {
# Use cosmic binary cache
nix.settings = {
substituters = [ "https://cosmic.cachix.org/" ];
trusted-public-keys = [ "cosmic.cachix.org-1:Dya9IyXD4xdBehWjrkPv6rtxpmMdRel02smYzA85dPE=" ];
};
environment.systemPackages = with pkgs; [
wl-clipboard
];
# Enable cosmic
services.desktopManager.cosmic.enable = true;
services.displayManager.cosmic-greeter.enable = true;
environment.cosmic.excludePackages = with pkgs; [
cosmic-edit
cosmic-term
cosmic-store
];
# there are cosmic-greeter files in /var/lib/cosmic-greeter/ and ~/.local/state/cosmic
# Config TODO my attempt to make this not home-manager driven...
# environment.etc = cosmicConfigFilesAttrs;
# systemd.user.tmpfiles.rules = [
# "L %h/.config/cosmic - - - - /etc/cosmic"
# ];
# Config TODO come up with a non home-manager way to do this. I dont want this flake to require home-manager from somewhere else to exist
home-manager.users = listToAttrs (
map (name: {
inherit name;
value = {
xdg.configFile = cosmicConfigFilesAttrs;
};
}) config.mods.de_cosmic.users
);
};
};
};
};
}

397
todo/de_hyprland/flake.lock generated Normal file
View file

@ -0,0 +1,397 @@
{
"nodes": {
"aquamarine": {
"inputs": {
"hyprutils": [
"hyprland",
"hyprutils"
],
"hyprwayland-scanner": [
"hyprland",
"hyprwayland-scanner"
],
"nixpkgs": [
"hyprland",
"nixpkgs"
],
"systems": [
"hyprland",
"systems"
]
},
"locked": {
"lastModified": 1736102453,
"narHash": "sha256-5qb4kb7Xbt8jJFL/oDqOor9Z2+E+A+ql3PiyDvsfWZ0=",
"owner": "hyprwm",
"repo": "aquamarine",
"rev": "4846091641f3be0ad7542086d52769bb7932bde6",
"type": "github"
},
"original": {
"owner": "hyprwm",
"repo": "aquamarine",
"type": "github"
}
},
"flake-compat": {
"flake": false,
"locked": {
"lastModified": 1696426674,
"narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=",
"owner": "edolstra",
"repo": "flake-compat",
"rev": "0f9255e01c2351cc7d116c072cb317785dd33b33",
"type": "github"
},
"original": {
"owner": "edolstra",
"repo": "flake-compat",
"type": "github"
}
},
"gitignore": {
"inputs": {
"nixpkgs": [
"hyprland",
"pre-commit-hooks",
"nixpkgs"
]
},
"locked": {
"lastModified": 1709087332,
"narHash": "sha256-HG2cCnktfHsKV0s4XW83gU3F57gaTljL9KNSuG6bnQs=",
"owner": "hercules-ci",
"repo": "gitignore.nix",
"rev": "637db329424fd7e46cf4185293b9cc8c88c95394",
"type": "github"
},
"original": {
"owner": "hercules-ci",
"repo": "gitignore.nix",
"type": "github"
}
},
"hyprcursor": {
"inputs": {
"hyprlang": [
"hyprland",
"hyprlang"
],
"nixpkgs": [
"hyprland",
"nixpkgs"
],
"systems": [
"hyprland",
"systems"
]
},
"locked": {
"lastModified": 1734906540,
"narHash": "sha256-vQ/L9hZFezC0LquLo4TWXkyniWtYBlFHAKIsDc7PYJE=",
"owner": "hyprwm",
"repo": "hyprcursor",
"rev": "69270ba8f057d55b0e6c2dca0e165d652856e613",
"type": "github"
},
"original": {
"owner": "hyprwm",
"repo": "hyprcursor",
"type": "github"
}
},
"hyprgraphics": {
"inputs": {
"hyprutils": [
"hyprland",
"hyprutils"
],
"nixpkgs": [
"hyprland",
"nixpkgs"
],
"systems": [
"hyprland",
"systems"
]
},
"locked": {
"lastModified": 1736115290,
"narHash": "sha256-Jcn6yAzfUMcxy3tN/iZRbi/QgrYm7XLyVRl9g/nbUl4=",
"owner": "hyprwm",
"repo": "hyprgraphics",
"rev": "52202272d89da32a9f866c0d10305a5e3d954c50",
"type": "github"
},
"original": {
"owner": "hyprwm",
"repo": "hyprgraphics",
"type": "github"
}
},
"hyprland": {
"inputs": {
"aquamarine": "aquamarine",
"hyprcursor": "hyprcursor",
"hyprgraphics": "hyprgraphics",
"hyprland-protocols": "hyprland-protocols",
"hyprland-qtutils": "hyprland-qtutils",
"hyprlang": "hyprlang",
"hyprutils": "hyprutils",
"hyprwayland-scanner": "hyprwayland-scanner",
"nixpkgs": "nixpkgs",
"pre-commit-hooks": "pre-commit-hooks",
"systems": "systems",
"xdph": "xdph"
},
"locked": {
"lastModified": 1736873552,
"narHash": "sha256-VByeYPOu3I0a5r5Nn45loSaEV8M9fmZrTByUdu9sjfY=",
"owner": "hyprwm",
"repo": "Hyprland",
"rev": "25add26881d7b98d2b80eb7a95d3aee0449b72b9",
"type": "github"
},
"original": {
"owner": "hyprwm",
"repo": "Hyprland",
"type": "github"
}
},
"hyprland-protocols": {
"inputs": {
"nixpkgs": [
"hyprland",
"nixpkgs"
],
"systems": [
"hyprland",
"systems"
]
},
"locked": {
"lastModified": 1735774328,
"narHash": "sha256-vIRwLS9w+N99EU1aJ+XNOU6mJTxrUBa31i1r82l0V7s=",
"owner": "hyprwm",
"repo": "hyprland-protocols",
"rev": "e3b6af97ddcfaafbda8e2828c719a5af84f662cb",
"type": "github"
},
"original": {
"owner": "hyprwm",
"repo": "hyprland-protocols",
"type": "github"
}
},
"hyprland-qtutils": {
"inputs": {
"hyprutils": [
"hyprland",
"hyprutils"
],
"nixpkgs": [
"hyprland",
"nixpkgs"
],
"systems": [
"hyprland",
"systems"
]
},
"locked": {
"lastModified": 1736114838,
"narHash": "sha256-FxbuGQExtN37ToWYnGmO6weOYN6WPHN/RAqbr7gNPek=",
"owner": "hyprwm",
"repo": "hyprland-qtutils",
"rev": "6997fe382dcf396704227d2b98ffdd5066da6959",
"type": "github"
},
"original": {
"owner": "hyprwm",
"repo": "hyprland-qtutils",
"type": "github"
}
},
"hyprlang": {
"inputs": {
"hyprutils": [
"hyprland",
"hyprutils"
],
"nixpkgs": [
"hyprland",
"nixpkgs"
],
"systems": [
"hyprland",
"systems"
]
},
"locked": {
"lastModified": 1735393019,
"narHash": "sha256-NPpqA8rtmDLsEmZOmz+qR67zsB6Y503Jnv+nSFLKJZ8=",
"owner": "hyprwm",
"repo": "hyprlang",
"rev": "55608efdaa387af7bfdc0eddb404c409958efa43",
"type": "github"
},
"original": {
"owner": "hyprwm",
"repo": "hyprlang",
"type": "github"
}
},
"hyprutils": {
"inputs": {
"nixpkgs": [
"hyprland",
"nixpkgs"
],
"systems": [
"hyprland",
"systems"
]
},
"locked": {
"lastModified": 1736164519,
"narHash": "sha256-1LimBKvDpBbeX+qW7T240WEyw+DBVpDotZB4JYm8Aps=",
"owner": "hyprwm",
"repo": "hyprutils",
"rev": "3c895da64b0eb19870142196fa48c07090b441c4",
"type": "github"
},
"original": {
"owner": "hyprwm",
"repo": "hyprutils",
"type": "github"
}
},
"hyprwayland-scanner": {
"inputs": {
"nixpkgs": [
"hyprland",
"nixpkgs"
],
"systems": [
"hyprland",
"systems"
]
},
"locked": {
"lastModified": 1735493474,
"narHash": "sha256-fktzv4NaqKm94VAkAoVqO/nqQlw+X0/tJJNAeCSfzK4=",
"owner": "hyprwm",
"repo": "hyprwayland-scanner",
"rev": "de913476b59ee88685fdc018e77b8f6637a2ae0b",
"type": "github"
},
"original": {
"owner": "hyprwm",
"repo": "hyprwayland-scanner",
"type": "github"
}
},
"nixpkgs": {
"locked": {
"lastModified": 1736012469,
"narHash": "sha256-/qlNWm/IEVVH7GfgAIyP6EsVZI6zjAx1cV5zNyrs+rI=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "8f3e1f807051e32d8c95cd12b9b421623850a34d",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixos-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"pre-commit-hooks": {
"inputs": {
"flake-compat": "flake-compat",
"gitignore": "gitignore",
"nixpkgs": [
"hyprland",
"nixpkgs"
]
},
"locked": {
"lastModified": 1735882644,
"narHash": "sha256-3FZAG+pGt3OElQjesCAWeMkQ7C/nB1oTHLRQ8ceP110=",
"owner": "cachix",
"repo": "git-hooks.nix",
"rev": "a5a961387e75ae44cc20f0a57ae463da5e959656",
"type": "github"
},
"original": {
"owner": "cachix",
"repo": "git-hooks.nix",
"type": "github"
}
},
"root": {
"inputs": {
"hyprland": "hyprland"
}
},
"systems": {
"locked": {
"lastModified": 1689347949,
"narHash": "sha256-12tWmuL2zgBgZkdoB6qXZsgJEH9LR3oUgpaQq2RbI80=",
"owner": "nix-systems",
"repo": "default-linux",
"rev": "31732fcf5e8fea42e59c2488ad31a0e651500f68",
"type": "github"
},
"original": {
"owner": "nix-systems",
"repo": "default-linux",
"type": "github"
}
},
"xdph": {
"inputs": {
"hyprland-protocols": [
"hyprland",
"hyprland-protocols"
],
"hyprlang": [
"hyprland",
"hyprlang"
],
"hyprutils": [
"hyprland",
"hyprutils"
],
"hyprwayland-scanner": [
"hyprland",
"hyprwayland-scanner"
],
"nixpkgs": [
"hyprland",
"nixpkgs"
],
"systems": [
"hyprland",
"systems"
]
},
"locked": {
"lastModified": 1734907020,
"narHash": "sha256-p6HxwpRKVl1KIiY5xrJdjcEeK3pbmc///UOyV6QER+w=",
"owner": "hyprwm",
"repo": "xdg-desktop-portal-hyprland",
"rev": "d7f18dda5e511749fa1511185db3536208fb1a63",
"type": "github"
},
"original": {
"owner": "hyprwm",
"repo": "xdg-desktop-portal-hyprland",
"type": "github"
}
}
},
"root": "root",
"version": 7
}

225
todo/de_hyprland/flake.nix Normal file
View file

@ -0,0 +1,225 @@
{
inputs = {
# TODO requires home-manager module to be on the system as well, byohm
hyprland = {
url = "github:hyprwm/Hyprland";
};
};
outputs =
{
hyprland,
...
}:
{
nixosModules = {
default =
{
config,
lib,
pkgs,
...
}:
let
pkgs-unstable = hyprland.inputs.nixpkgs.legacyPackages.${pkgs.system};
cfg = config.mods.de_hyprland;
in
with lib;
{
options.mods.de_hyprland = {
users = mkOption {
type = types.listOf types.str;
description = "Users to apply cosmic DE settings to.";
default = (
lib.optionals (config.mods.common.primaryUser != null) [ config.mods.common.primaryUser ]
);
};
amd = mkEnableOption "Enable AMD graphics drivers.";
nvidia = mkEnableOption "Enable NVIDIA graphics drivers.";
};
imports = [
# cosmic.nixosModules.default
];
config = {
# Polkit required
security.polkit.enable = true;
# amd drivers
boot.initrd.kernelModules = mkIf cfg.amd [ "amdgpu" ];
systemd.tmpfiles.rules = mkIf cfg.amd [
"L+ /opt/rocm/hip - - - - ${pkgs.rocmPackages.clr}"
];
hardware.graphics.extraPackages = mkIf cfg.amd (
with pkgs;
[
rocmPackages.clr.icd
]
);
services.xserver = {
enable = true;
xkb.layout = "us";
# videosDrivers = ["nvidia"];
vidoesDrivers = mkIf cfg.nvidia [ "nvidia" ];
videoDrivers = mkIf cfg.amd [ "amdgpu" ];
displayManager.gdm = {
enable = true;
wayland = true;
};
};
xdg = {
autostart.enable = true;
portal = {
enable = true;
extraPortals = [
pkgs.xdg-desktop-portal
pkgs.xdg-desktop-portal-gtk
];
};
};
security = {
pam.services.swaylock = {
text = ''
auth include login
'';
};
};
programs = {
hyprland = {
enable = true;
# nvidiaPatches = true;
xwayland.enable = true;
# set the flake package
package = hyprland.packages.${pkgs.system}.hyprland;
# make sure to also set the portal package, so that they are in sync
portalPackage = hyprland.packages.${pkgs.system}.xdg-desktop-portal-hyprland;
};
waybar = {
enable = true;
};
thunar = {
enable = true;
};
};
environment.systemPackages = with pkgs; [
clinfo # TODO only in amd
# required
dconf
xwayland
kitty
swaylock
swayidle
xdg-utils
xdg-desktop-portal-hyprland
xdg-desktop-portal
xdg-desktop-portal-gtk
];
environment.sessionVariables = {
# If cursor becomes invisible
# WLR_NO_HARDWARE_CURSORS = "1";
# Optional, hint Electron apps to use Wayland:
NIXOS_OZONE_WL = "1";
XDG_SESSION_TYPE = "wayland";
XDG_CURRENT_DESKTOP = "Hyprland";
XDG_SESSION_DESKTOP = "Hyprland";
};
# FPS drops in games or programs like Blender on stable NixOS when using the Hyprland flake, it is most likely a mesa version mismatch between your system and Hyprland
hardware = {
graphics = {
enable = true;
# nvidia.modsettings.enable = true;
package = pkgs-unstable.mesa.drivers;
# if you also want 32-bit support (e.g for Steam)
enable32Bit = true;
package32 = pkgs-unstable.pkgsi686Linux.mesa.drivers;
};
# TODO nvidia...
};
# Config TODO come up with a non home-manager way to do this. I dont want this flake to require home-manager from somewhere else to exist
home-manager.users = listToAttrs (
map (name: {
inherit name;
value = {
programs.kitty.enable = true; # required for the default Hyprland config
wayland.windowManager.hyprland = {
enable = true;
xwayland.enable = true;
package = hyprland.packages.${pkgs.system}.hyprland;
# plugins = [
# inputs.hyprland-plugins.packages.${pkgs.stdenv.hostPlatform.system}.hyprbars
# "/absolute/path/to/plugin.so"
# ];
settings = {
"$mod" = "SUPER";
bind =
[
"$mod, F, exec, firefox"
", Print, exec, grimblast copy area"
]
++ (
# workspaces
# binds $mod + [shift +] {1..9} to [move to] workspace {1..9}
builtins.concatLists (
builtins.genList (
i:
let
ws = i + 1;
in
[
"$mod, code:1${toString i}, workspace, ${toString ws}"
"$mod SHIFT, code:1${toString i}, movetoworkspace, ${toString ws}"
]
) 9
)
);
};
# Programs dont work in systemd services, but do on the terminal fix
systemd = {
enable = true;
variables = [ "--all" ];
};
};
# Fixing problems with themes TODO use this?
# home.pointerCursor = {
# gtk.enable = true;
# # x11.enable = true;
# package = pkgs.bibata-cursors;
# name = "Bibata-Modern-Classic";
# size = 16;
# };
#
# gtk = {
# enable = true;
#
# theme = {
# package = pkgs.flat-remix-gtk;
# name = "Flat-Remix-GTK-Grey-Darkest";
# };
#
# iconTheme = {
# package = pkgs.gnome.adwaita-icon-theme;
# name = "Adwaita";
# };
#
# font = {
# name = "Sans";
# size = 11;
# };
# };
};
}) cfg.users
);
};
};
};
};
}

87
todo/nebula/flake.nix Normal file
View file

@ -0,0 +1,87 @@
{
inputs = {
};
outputs =
{
...
}:
{
nixosModules = {
default =
{
config,
pkgs,
lib,
...
}:
with lib;
{
options.mods.nebula = {
serviceEnabled = mkOption {
type = types.bool;
default = true;
description = "Whether the nebula service should run.";
};
};
config = {
environment.systemPackages = with pkgs; [
nebula
traceroute # for debugging
];
networking.firewall.allowedUDPPorts = [ 4242 ];
systemd.services."nebula" = mkIf config.mods.nebula.serviceEnabled {
description = "Nebula VPN service";
wants = [
"basic.target"
"network.target"
"network-online.target"
"nss-lookup.target"
];
after = [
"basic.target"
"network.target"
"network-online.target"
"nss-lookup.target"
];
before = [ "sshd.service" ];
wantedBy = [ "multi-user.target" ];
serviceConfig = {
Type = "notify";
Restart = "always";
RestartSec = 1;
ExecStart = "${pkgs.nebula}/bin/nebula -config /etc/nebula/config.yml";
UMask = "0027";
CapabilityBoundingSet = "CAP_NET_ADMIN";
AmbientCapabilities = "CAP_NET_ADMIN";
LockPersonality = true;
NoNewPrivileges = true;
PrivateDevices = false; # needs access to /dev/net/tun (below)
DeviceAllow = "/dev/net/tun rw";
DevicePolicy = "closed";
PrivateTmp = true;
PrivateUsers = false; # CapabilityBoundingSet needs to apply to the host namespace
ProtectClock = true;
ProtectControlGroups = true;
ProtectHome = true;
ProtectHostname = true;
ProtectKernelLogs = true;
ProtectKernelModules = true;
ProtectKernelTunables = true;
ProtectProc = "invisible";
ProtectSystem = "strict";
RestrictNamespaces = true;
RestrictSUIDSGID = true;
};
unitConfig = {
StartLimitIntervalSec = 5;
StartLimitBurst = 3;
};
};
};
};
};
};
}

83
todo/stormd/flake.lock generated Normal file
View file

@ -0,0 +1,83 @@
{
"nodes": {
"nix-filter": {
"locked": {
"lastModified": 1710156097,
"narHash": "sha256-1Wvk8UP7PXdf8bCCaEoMnOT1qe5/Duqgj+rL8sRQsSM=",
"owner": "numtide",
"repo": "nix-filter",
"rev": "3342559a24e85fc164b295c3444e8a139924675b",
"type": "github"
},
"original": {
"owner": "numtide",
"repo": "nix-filter",
"type": "github"
}
},
"nixpkgs": {
"locked": {
"lastModified": 1728888510,
"narHash": "sha256-nsNdSldaAyu6PE3YUA+YQLqUDJh+gRbBooMMekZJwvI=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "a3c0b3b21515f74fd2665903d4ce6bc4dc81c77c",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixos-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"ringofstorms-stormd": {
"inputs": {
"nix-filter": "nix-filter",
"nixpkgs": "nixpkgs",
"rust-overlay": "rust-overlay"
},
"locked": {
"lastModified": 1735420577,
"narHash": "sha256-2HWEALz0PVJCiP/2iZuDMj4qyukXR5IxNKFxT1NAMlQ=",
"ref": "refs/heads/master",
"rev": "7edf6888a460708889fabea2c762d4dfed4fa64f",
"revCount": 51,
"type": "git",
"url": "ssh://git.joshuabell.xyz:3032/stormd"
},
"original": {
"type": "git",
"url": "ssh://git.joshuabell.xyz:3032/stormd"
}
},
"root": {
"inputs": {
"ringofstorms-stormd": "ringofstorms-stormd"
}
},
"rust-overlay": {
"inputs": {
"nixpkgs": [
"ringofstorms-stormd",
"nixpkgs"
]
},
"locked": {
"lastModified": 1729218602,
"narHash": "sha256-KDmYxpkFWa0Go0WnOpkgQOypVaQxbwgpEutET5ey1VQ=",
"owner": "oxalica",
"repo": "rust-overlay",
"rev": "9051466c82b9b3a6ba9e06be99621ad25423ec94",
"type": "github"
},
"original": {
"owner": "oxalica",
"repo": "rust-overlay",
"type": "github"
}
}
},
"root": "root",
"version": 7
}

42
todo/stormd/flake.nix Normal file
View file

@ -0,0 +1,42 @@
{
inputs = {
ringofstorms-stormd.url = "git+ssh://git.joshuabell.xyz:3032/stormd";
# Local path usage for testing changes locally
# ringofstorms-nvim.url = "path:/home/josh/projects/stormd";
};
outputs =
{
ringofstorms-stormd,
...
}:
{
nixosModules = {
default =
{
config,
pkgs,
lib,
...
}:
with lib;
{
options.mods.ros-stormd = {
debug = mkOption {
type = types.bool;
default = false;
description = lib.mdDoc "Whether to enable debug logging for stormd daemon.";
};
};
imports = [ ringofstorms-stormd.nixosModules.default ];
config = {
services.stormd = {
enable = true;
nebulaPackage = pkgs.nebula;
extraOptions = mkIf config.mods.ros-stormd.debug [ "-v" ];
};
};
};
};
};
}