Created options; Moved tailscale to network folder; Disabled networkmanager wait online; Added repl command; updated firefox interface; other smaller stuff

This commit is contained in:
Jurn Wubben 2025-03-09 15:23:13 +01:00
parent 20891b3e14
commit 5de86bcfe3
37 changed files with 542 additions and 255 deletions

166
flake.lock generated
View file

@ -70,11 +70,11 @@
"firefox-gnome-theme": {
"flake": false,
"locked": {
"lastModified": 1736899990,
"narHash": "sha256-S79Hqn2EtSxU4kp99t8tRschSifWD4p/51++0xNWUxw=",
"lastModified": 1739223196,
"narHash": "sha256-vAxN2f3rvl5q62gQQjZGVSvF93nAsOxntuFz+e/655w=",
"owner": "rafaelmardojai",
"repo": "firefox-gnome-theme",
"rev": "91ca1f82d717b02ceb03a3f423cbe8082ebbb26d",
"rev": "a89108e6272426f4eddd93ba17d0ea101c34fb21",
"type": "github"
},
"original": {
@ -84,7 +84,6 @@
}
},
"flake-compat": {
"flake": false,
"locked": {
"lastModified": 1733328505,
"narHash": "sha256-NeCCThCEP3eCl2l/+27kNNK7QrwZB1IJCrXfrbv5oqU=",
@ -103,6 +102,24 @@
"inputs": {
"nixpkgs-lib": "nixpkgs-lib"
},
"locked": {
"lastModified": 1741352980,
"narHash": "sha256-+u2UunDA4Cl5Fci3m7S643HzKmIDAe+fiXrLqYsR2fs=",
"owner": "hercules-ci",
"repo": "flake-parts",
"rev": "f4330d22f1c5d2ba72d3d22df5597d123fdb60a9",
"type": "github"
},
"original": {
"owner": "hercules-ci",
"repo": "flake-parts",
"type": "github"
}
},
"flake-parts_2": {
"inputs": {
"nixpkgs-lib": "nixpkgs-lib_2"
},
"locked": {
"lastModified": 1738453229,
"narHash": "sha256-7H9XgNiGLKN1G1CgRh0vUL4AheZSYzPm+zmZ7vxbJdo=",
@ -117,9 +134,13 @@
"type": "github"
}
},
"flake-parts_2": {
"flake-parts_3": {
"inputs": {
"nixpkgs-lib": "nixpkgs-lib_2"
"nixpkgs-lib": [
"stylix",
"nur",
"nixpkgs"
]
},
"locked": {
"lastModified": 1733312601,
@ -203,11 +224,11 @@
]
},
"locked": {
"lastModified": 1735882644,
"narHash": "sha256-3FZAG+pGt3OElQjesCAWeMkQ7C/nB1oTHLRQ8ceP110=",
"lastModified": 1737465171,
"narHash": "sha256-R10v2hoJRLq8jcL4syVFag7nIGE7m13qO48wRIukWNg=",
"owner": "cachix",
"repo": "git-hooks.nix",
"rev": "a5a961387e75ae44cc20f0a57ae463da5e959656",
"rev": "9364dc02281ce2d37a1f55b6e51f7c0f65a75f17",
"type": "github"
},
"original": {
@ -262,11 +283,11 @@
]
},
"locked": {
"lastModified": 1739470101,
"narHash": "sha256-NxNe32VB4XI/xIXrsKmIfrcgtEx5r/5s52pL3CpEcA4=",
"lastModified": 1741526102,
"narHash": "sha256-w1VBhX21NgK82Dbafd35AjSfOXgLAxZDotWlwO5PS+c=",
"owner": "nix-community",
"repo": "home-manager",
"rev": "5031c6d2978109336637977c165f82aa49fa16a7",
"rev": "07f505f91e0c7112550845425222f41865c4260a",
"type": "github"
},
"original": {
@ -284,11 +305,11 @@
]
},
"locked": {
"lastModified": 1737630279,
"narHash": "sha256-wJQCxyMRc4P26zDrHmZiRD5bbfcJpqPG3e2djdGG3pk=",
"lastModified": 1740347597,
"narHash": "sha256-st5q9egkPGz8TUcVVlIQX7y6G3AzHob+6M963bwVq74=",
"owner": "nix-community",
"repo": "home-manager",
"rev": "0db5c8bfcce78583ebbde0b2abbc95ad93445f7c",
"rev": "12e26a74e5eb1a31e13daaa08858689e25ebd449",
"type": "github"
},
"original": {
@ -299,11 +320,11 @@
},
"mnw": {
"locked": {
"lastModified": 1735150973,
"narHash": "sha256-OJhcCAoaMMXeD6o4qI/hxBCNELJp4dN8D5LJZc8w8XA=",
"lastModified": 1738852285,
"narHash": "sha256-8Y1uyE6gGHxdU0Vcx2CMg/dAmDSxJw19aAl3TKbbo54=",
"owner": "Gerg-L",
"repo": "mnw",
"rev": "40cd0b006cc48dffd0f8698ad7f54cf1d56779a6",
"rev": "6ae73dc9cb72cea17bcc2e3d4670825f483e80e8",
"type": "github"
},
"original": {
@ -340,11 +361,11 @@
},
"nixpkgs": {
"locked": {
"lastModified": 1739478914,
"narHash": "sha256-qljqSeAWOFbd6HNg8Ey28RdZYdVN8bMb6HJK7uqCKZ0=",
"lastModified": 1741516043,
"narHash": "sha256-Hv0S630U4GVZBM1Q+NCEwyN5ct7cic+8r6qLIaUaVqI=",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "6f9b8ea84c04411c48ab5aab4620ab204936d9fc",
"rev": "8adda98a4e637d0d8a867f19ace5ed6680ecc94a",
"type": "github"
},
"original": {
@ -355,6 +376,21 @@
}
},
"nixpkgs-lib": {
"locked": {
"lastModified": 1740877520,
"narHash": "sha256-oiwv/ZK/2FhGxrCkQkB83i7GnWXPPLzoqFHpDD3uYpk=",
"owner": "nix-community",
"repo": "nixpkgs.lib",
"rev": "147dee35aab2193b174e4c0868bd80ead5ce755c",
"type": "github"
},
"original": {
"owner": "nix-community",
"repo": "nixpkgs.lib",
"type": "github"
}
},
"nixpkgs-lib_2": {
"locked": {
"lastModified": 1738452942,
"narHash": "sha256-vJzFZGaCpnmo7I6i416HaBLpC+hvcURh/BQwROcGIp8=",
@ -366,25 +402,13 @@
"url": "https://github.com/NixOS/nixpkgs/archive/072a6db25e947df2f31aab9eccd0ab75d5b2da11.tar.gz"
}
},
"nixpkgs-lib_2": {
"locked": {
"lastModified": 1733096140,
"narHash": "sha256-1qRH7uAUsyQI7R1Uwl4T+XvdNv778H0Nb5njNrqvylY=",
"type": "tarball",
"url": "https://github.com/NixOS/nixpkgs/archive/5487e69da40cbd611ab2cadee0b4637225f7cfae.tar.gz"
},
"original": {
"type": "tarball",
"url": "https://github.com/NixOS/nixpkgs/archive/5487e69da40cbd611ab2cadee0b4637225f7cfae.tar.gz"
}
},
"nixpkgs_2": {
"locked": {
"lastModified": 1736798957,
"narHash": "sha256-qwpCtZhSsSNQtK4xYGzMiyEDhkNzOCz/Vfu4oL2ETsQ=",
"lastModified": 1740367490,
"narHash": "sha256-WGaHVAjcrv+Cun7zPlI41SerRtfknGQap281+AakSAw=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "9abb87b552b7f55ac8916b6fc9e5cb486656a2f3",
"rev": "0196c0175e9191c474c26ab5548db27ef5d34b05",
"type": "github"
},
"original": {
@ -410,6 +434,29 @@
"type": "sourcehut"
}
},
"nur": {
"inputs": {
"flake-parts": "flake-parts_3",
"nixpkgs": [
"stylix",
"nixpkgs"
],
"treefmt-nix": "treefmt-nix"
},
"locked": {
"lastModified": 1740408283,
"narHash": "sha256-2xECnhgF3MU9YjmvOkrRp8wRFo2OjjewgCtlfckhL5s=",
"owner": "nix-community",
"repo": "NUR",
"rev": "496a4a11162bdffb9a7b258942de138873f019f7",
"type": "github"
},
"original": {
"owner": "nix-community",
"repo": "NUR",
"type": "github"
}
},
"nvf": {
"inputs": {
"flake-parts": "flake-parts_2",
@ -423,11 +470,11 @@
"systems": "systems_2"
},
"locked": {
"lastModified": 1740070226,
"narHash": "sha256-+NtuaiNf3YNTDeMTHW6MVK86Bdkgh1vveWojDC/dRaM=",
"lastModified": 1741477095,
"narHash": "sha256-aiaCmDReL34ViSB7ArVq8vB2VdTDVft1+vKfWkWeyUo=",
"owner": "notashelf",
"repo": "nvf",
"rev": "54476b5a8bea713eb0480b4f3a66478cc15ef813",
"rev": "6576509cd559aec3da271d12fa911d04d44708ec",
"type": "github"
},
"original": {
@ -480,6 +527,7 @@
"gnome-shell": "gnome-shell",
"home-manager": "home-manager",
"nixpkgs": "nixpkgs_2",
"nur": "nur",
"systems": "systems_3",
"tinted-foot": "tinted-foot",
"tinted-kitty": "tinted-kitty",
@ -488,11 +536,11 @@
"tinted-zed": "tinted-zed"
},
"locked": {
"lastModified": 1739375014,
"narHash": "sha256-0fNbvZ1Dod4rDIfwGnC7CzJ3wRFSF1v5AvNCmNkVgXo=",
"lastModified": 1741392477,
"narHash": "sha256-6ySHuduGhlZBv1uxEOlOeHWDEkKuLQ/O63DI+ZRfAmg=",
"owner": "danth",
"repo": "stylix",
"rev": "e86de61bb8f5f2b6459d0be3e3291ad16db4b777",
"rev": "6eea250b10386be0fc23496d1039d76b3147680e",
"type": "github"
},
"original": {
@ -583,11 +631,11 @@
"tinted-schemes": {
"flake": false,
"locked": {
"lastModified": 1737565458,
"narHash": "sha256-y+9cvOA6BLKT0WfebDsyUpUa/YxKow9hTjBp6HpQv68=",
"lastModified": 1740351358,
"narHash": "sha256-Hdk850xgAd3DL8KX0AbyU7tC834d3Lej1jOo3duWiOA=",
"owner": "tinted-theming",
"repo": "schemes",
"rev": "ae31625ba47aeaa4bf6a98cf11a8d4886f9463d9",
"rev": "a1bc2bd89e693e7e3f5764cfe8114e2ae150e184",
"type": "github"
},
"original": {
@ -599,11 +647,11 @@
"tinted-tmux": {
"flake": false,
"locked": {
"lastModified": 1735737224,
"narHash": "sha256-FO2hRBkZsjlIRqzNHCPc/52yxg11kHGA8MEtSun9RwE=",
"lastModified": 1740272597,
"narHash": "sha256-/etfUV3HzAaLW3RSJVwUaW8ULbMn3v6wbTlXSKbcoWQ=",
"owner": "tinted-theming",
"repo": "tinted-tmux",
"rev": "aead506a9930c717ebf81cc83a2126e9ca08fa64",
"rev": "b6c7f46c8718cc484f2db8b485b06e2a98304cd0",
"type": "github"
},
"original": {
@ -627,6 +675,28 @@
"repo": "base16-zed",
"type": "github"
}
},
"treefmt-nix": {
"inputs": {
"nixpkgs": [
"stylix",
"nur",
"nixpkgs"
]
},
"locked": {
"lastModified": 1733222881,
"narHash": "sha256-JIPcz1PrpXUCbaccEnrcUS8jjEb/1vJbZz5KkobyFdM=",
"owner": "numtide",
"repo": "treefmt-nix",
"rev": "49717b5af6f80172275d47a418c9719a31a78b53",
"type": "github"
},
"original": {
"owner": "numtide",
"repo": "treefmt-nix",
"type": "github"
}
}
},
"root": "root",

View file

@ -1,6 +1,8 @@
{
imports = [
./firefox.nix
./games.nix
./mpv.nix
./neovim.nix
./other.nix
];

View file

@ -1,6 +1,11 @@
{pkgs, ...}: {
{
osConfig,
pkgs,
lib,
...
}: {
programs.firefox = {
enable = true;
enable = osConfig.niksos.desktop;
package = pkgs.wrapFirefox pkgs.firefox-unwrapped {
extraPolicies = {
DisableFirefoxStudies = true;
@ -49,6 +54,7 @@
"jid1-QoFqdK4qzUfGWQ@jetpack".install_url = "https://addons.mozilla.org/firefox/downloads/latest/dark-background-light-text/latest.xpi"; # Dark reader alternative
# "{34daeb50-c2d2-4f14-886a-7160b24d66a4}".install_url = "https://addons.mozilla.org/firefox/downloads/latest/youtube-shorts-block/latest.xpi"; # Youtube short blocker
"vimium-c@gdh1995.cn".install_url = "https://addons.mozilla.org/firefox/downloads/latest/vimium-c/latest.xpi"; # Extension info here.
"ff2mpv@yossarian.net".install_url = "https://addons.mozilla.org/firefox/downloads/latest/ff2mpv/latest.xpi";
};
};
};
@ -73,8 +79,16 @@
"gfx.webrender.all" = true;
"media.ffmpeg.vaapi.enabled" = true;
"browser.uiCustomization.state" = ''{"placements":{"widget-overflow-fixed-list":[],"unified-extensions-area":["ublock0_raymondhill_net-browser-action","queryamoid_kaply_com-browser-action","_34daeb50-c2d2-4f14-886a-7160b24d66a4_-browser-action"],"nav-bar":["back-button","forward-button","stop-reload-button","customizableui-special-spring1","vertical-spacer","urlbar-container","customizableui-special-spring2","save-to-pocket-button","downloads-button","fxa-toolbar-menu-button","unified-extensions-button","_446900e4-71c2-419f-a6a7-df9c091e268b_-browser-action","jid1-qofqdk4qzufgwq_jetpack-browser-action"],"toolbar-menubar":["menubar-items"],"TabsToolbar":["firefox-view-button","tabbrowser-tabs","new-tab-button","alltabs-button"],"vertical-tabs":[],"PersonalToolbar":["import-button","personal-bookmarks"]},"seen":["save-to-pocket-button","developer-button","jid1-qofqdk4qzufgwq_jetpack-browser-action","ublock0_raymondhill_net-browser-action","queryamoid_kaply_com-browser-action","_34daeb50-c2d2-4f14-886a-7160b24d66a4_-browser-action","_446900e4-71c2-419f-a6a7-df9c091e268b_-browser-action"],"dirtyAreaCache":["nav-bar","vertical-tabs","PersonalToolbar","toolbar-menubar","TabsToolbar","unified-extensions-area"],"currentVersion":21,"newElementCount":2}'';
"browser.uiCustomization.state" = ''{"placements":{"widget-overflow-fixed-list":[],"unified-extensions-area":["ublock0_raymondhill_net-browser-action","queryamoid_kaply_com-browser-action","_34daeb50-c2d2-4f14-886a-7160b24d66a4_-browser-action","firefox_tampermonkey_net-browser-action","vimium-c_gdh1995_cn-browser-action"],"nav-bar":["back-button","forward-button","stop-reload-button","customizableui-special-spring1","vertical-spacer","urlbar-container","customizableui-special-spring2","save-to-pocket-button","downloads-button","fxa-toolbar-menu-button","unified-extensions-button","_446900e4-71c2-419f-a6a7-df9c091e268b_-browser-action","jid1-qofqdk4qzufgwq_jetpack-browser-action","ff2mpv_yossarian_net-browser-action"],"toolbar-menubar":["menubar-items"],"TabsToolbar":["firefox-view-button","tabbrowser-tabs","new-tab-button","alltabs-button"],"vertical-tabs":[],"PersonalToolbar":["import-button","personal-bookmarks"]},"seen":["save-to-pocket-button","developer-button","jid1-qofqdk4qzufgwq_jetpack-browser-action","ublock0_raymondhill_net-browser-action","queryamoid_kaply_com-browser-action","_34daeb50-c2d2-4f14-886a-7160b24d66a4_-browser-action","_446900e4-71c2-419f-a6a7-df9c091e268b_-browser-action","ff2mpv_yossarian_net-browser-action","firefox_tampermonkey_net-browser-action","vimium-c_gdh1995_cn-browser-action"],"dirtyAreaCache":["nav-bar","vertical-tabs","PersonalToolbar","toolbar-menubar","TabsToolbar","unified-extensions-area"],"currentVersion":21,"newElementCount":2}'';
};
};
};
home.file.".mozilla/native-messaging-hosts/ff2mpv.json".text = builtins.toJSON {
name = "ff2mpv";
description = "ff2mpv's external manifest";
path = lib.getExe pkgs.ff2mpv-rust;
type = "stdio";
allowed_extensions = ["ff2mpv@yossarian.net"];
};
}

3
home/programs/games.nix Normal file
View file

@ -0,0 +1,3 @@
{pkgs, ...}: {
# Also look at system/programs/games.nix
}

27
home/programs/mpv.nix Normal file
View file

@ -0,0 +1,27 @@
{
pkgs,
osConfig,
...
}: {
programs.mpv = {
enable = osConfig.niksos.desktop;
config = {
vo = "gpu";
profile = "gpu-hq";
hwdec = "auto-safe";
gpu-context = "wayland";
ytdl-format = "bestvideo+bestaudio";
volume-max = 200;
fs = true;
save-position-on-quit = true;
};
scripts = with pkgs.mpvScripts; [
uosc
youtube-upnext
thumbfast
sponsorblock
mpv-cheatsheet
];
};
}

View file

@ -1,8 +1,12 @@
{inputs, ...}: {
{
inputs,
osConfig,
...
}: {
imports = [inputs.nvf.homeManagerModules.default];
programs.nvf = {
enable = true;
enable = osConfig.niksos.neovim;
settings.vim = {
viAlias = true;
vimAlias = true;
@ -69,6 +73,7 @@
autocomplete.nvim-cmp.enable = true;
snippets.luasnip.enable = true;
mini.surround.enable = true;
# This can also be themed with stylix. Remove `targets.nvf.enable = false` in `../style/default.nix`
theme = {
enable = true;
name = "catppuccin";

View file

@ -1,5 +1,10 @@
{pkgs, ...}: {
home.packages = [
{
pkgs,
lib,
osConfig,
...
}: {
home.packages = lib.mkIf osConfig.niksos.desktop [
pkgs.spotify
pkgs.signal-desktop
];

View file

@ -1,9 +1,10 @@
{
imports = [
./fish.nix
./other.nix
./repl
./starship.nix
./yazi.nix
./zoxide.nix
./other.nix
];
}

View file

@ -5,5 +5,7 @@
pkgs.ear2ctl # FIXME: only when bluetooth enabled
pkgs.bluetui
pkgs.typst #FIXME: move to flake shell
];
}

View file

@ -0,0 +1,26 @@
# copied from https://github.com/fufexan/dotfiles/blob/main/pkgs/repl/default.nix
{pkgs, ...}: let
repl = ./lib.nix;
example = command: desc: ''\n\u001b[33m ${command}\u001b[0m - ${desc}'';
in {
home.packages = [
(pkgs.writeShellScriptBin
"repl"
''
case "$1" in
"-h"|"--help"|"help")
printf "%b\n\e[4mUsage\e[0m: \
${example "repl" "Loads system flake if available."} \
${example "repl /path/to/flake.nix" "Loads specified flake."}\n"
;;
*)
if [ -z "$1" ]; then
nix repl ${repl}
else
nix repl --arg flakePath $(${pkgs.coreutils}/bin/readlink -f $1 | ${pkgs.gnused}/bin/sed 's|/flake.nix||') ${repl}
fi
;;
esac
'')
];
}

50
home/shell/repl/lib.nix Normal file
View file

@ -0,0 +1,50 @@
# Copied from https://github.com/fufexan/dotfiles/blob/main/lib/repl.nix
{
flakePath ? null,
hostnamePath ? "/etc/hostname",
registryPath ? /etc/nix/registry.json,
}: let
inherit (builtins) getFlake head match currentSystem readFile pathExists filter fromJSON;
selfFlake =
if pathExists registryPath
then filter (it: it.from.id == "self") (fromJSON (readFile registryPath)).flakes
else [];
flakePath' =
toString
(
if flakePath != null
then flakePath
else if selfFlake != []
then (head selfFlake).to.path
else "/etc/nixos"
);
flake =
if pathExists flakePath'
then getFlake flakePath'
else {};
hostname =
if pathExists hostnamePath
then head (match "([a-zA-Z0-9\\-]+)\n" (readFile hostnamePath))
else "";
nixpkgsFromInputsPath = flake.inputs.nixpkgs.outPath or "";
nixpkgs =
flake.pkgs.${currentSystem}.nixpkgs
or (
if nixpkgsFromInputsPath != ""
then import nixpkgsFromInputsPath {}
else {}
);
nixpkgsOutput = removeAttrs (nixpkgs // nixpkgs.lib or {}) ["options" "config"];
in
{inherit flake;}
// flake
// builtins
// (flake.nixosConfigurations or {})
// flake.nixosConfigurations.${hostname} or {}
// nixpkgsOutput
// {getFlake = path: getFlake (toString path);}

View file

@ -1,4 +1,5 @@
{
osConfig,
config,
inputs,
pkgs,
@ -9,7 +10,7 @@
];
stylix = {
enable = true;
enable = osConfig.niksos.desktop;
image = ./background.png;
polarity = "dark";
@ -25,9 +26,14 @@
};
iconTheme = {
enable = true;
package = pkgs.tela-circle-icon-theme; #FIXME: Swap out for normal tela icons once https://github.com/NixOS/nixpkgs/issues/381521 is upstream.
dark = "Tela-circle-dark";
light = "Tela-circle-dark";
package = pkgs.tela-icon-theme;
dark = "Tela-dark";
light = "Tela-dark";
};
targets = {
gnome-text-editor.enable = false; # Creates an overlay in home-manager land which isn't allowed with globalPkgs.
nvf.enable = false; # I'd like to be able to read my code, thank you.
};
# base16Scheme = "${pkgs.base16-schemes}/share/themes/catppuccin-frappe.yaml";

View file

@ -1,4 +1,12 @@
{pkgs, ...}: {
{
pkgs,
lib,
osConfig,
...
}: let
inherit (lib) mkIf;
inherit (osConfig.niksos) desktop;
in {
imports = [
./fuzzel.nix
./hyprland
@ -6,11 +14,11 @@
./mako.nix
];
home.packages = [
home.packages = mkIf desktop [
pkgs.wl-clipboard
];
home.sessionVariables = {
home.sessionVariables = mkIf desktop {
QT_QPA_PLATFORM = "wayland";
SDL_VIDEODRIVER = "wayland";
XDG_SESSION_TYPE = "wayland";

View file

@ -1,11 +1,11 @@
{
config,
osConfig,
pkgs,
lib,
...
}: {
programs.fuzzel = {
enable = true;
enable = osConfig.niksos.desktop;
settings.main = {
launch-prefix = "${lib.getExe pkgs.uwsm} app --";
};

View file

@ -1,5 +1,6 @@
{
config,
osConfig,
lib,
pkgs,
...
@ -49,68 +50,74 @@
)
10);
in {
wayland.windowManager.hyprland.settings = {
"$mod" = "ALT";
config = lib.mkIf osConfig.niksos.desktop {
home.file.".XCompose".text = ''
<Multi_key> <s> <h> <r> <u> <g> : "¯\\_()_/¯" # Shrug.
'';
bindm = [
"$mod, mouse:272, movewindow"
"$mod, mouse:273, resizewindow"
"$mod ALT, mouse:272, resizewindow"
];
wayland.windowManager.hyprland.settings = {
"$mod" = "ALT";
bind =
[
"$mod SHIFT, E, exec, uwsm stop"
"$mod, Q, killactive,"
"$mod, F, fullscreen,"
"$mod, SPACE, togglefloating,"
"$mod, O, pseudo,"
"$mod ALT, ,resizeactive,"
bindm = [
"$mod, mouse:272, movewindow"
"$mod, mouse:273, resizewindow"
"$mod ALT, mouse:272, resizewindow"
];
"$mod, D, exec, ${fuzzel}"
"$mod, Return, exec, ${foot}"
"$mod Shift, Return, exec, ${firefox}"
"$mod, Escape, exec, ${hyprlock}"
bind =
[
"$mod SHIFT, E, exec, uwsm stop"
"$mod, Q, killactive,"
"$mod, F, fullscreen,"
"$mod, SPACE, togglefloating,"
"$mod, O, pseudo,"
"$mod ALT, ,resizeactive,"
"$mod, A, exec, ${pulsemixer}"
"$mod, B, exec, ${bluetui}"
"$mod, N, exec, ${nmtui}"
''
$mod, S, exec, bash -c 'hyprctl notify -1 5000 "rgb(${base0D})" "$(${getExe (import ./scripts.nix {inherit pkgs;}).statusnotify})"'
''
"$mod, D, exec, ${fuzzel}"
"$mod, Return, exec, ${foot}"
"$mod Shift, Return, exec, ${firefox}"
"$mod, Escape, exec, ${hyprlock}"
"$mod, Print, exec, ${grimblast} copy area"
", Print, exec, ${grimblast} save area - | ${swappy} -f -"
"$mod, A, exec, ${pulsemixer}"
"$mod, B, exec, ${bluetui}"
"$mod, N, exec, ${nmtui}"
''
$mod, S, exec, bash -c 'hyprctl notify -1 5000 "rgb(${base0D})" "$(${getExe (import ./scripts.nix {inherit pkgs;}).statusnotify})"'
''
"$mod, h, movefocus, l"
"$mod, l, movefocus, r"
"$mod, k, movefocus, u"
"$mod, j, movefocus, d"
"$mod, Print, exec, ${grimblast} copy area"
", Print, exec, ${grimblast} save area - | ${swappy} -f -"
"$mod SHIFT, h, movewindow, l"
"$mod SHIFT, l, movewindow, r"
"$mod SHIFT, k, movewindow, u"
"$mod SHIFT, j, movewindow, d"
]
++ workspaces;
"$mod, h, movefocus, l"
"$mod, l, movefocus, r"
"$mod, k, movefocus, u"
"$mod, j, movefocus, d"
bindl = [
# media controls
", XF86AudioPlay, exec, ${playerctl} play-pause"
", XF86AudioPrev, exec, ${playerctl} previous"
", XF86AudioNext, exec, ${playerctl} next"
"$mod SHIFT, h, movewindow, l"
"$mod SHIFT, l, movewindow, r"
"$mod SHIFT, k, movewindow, u"
"$mod SHIFT, j, movewindow, d"
]
++ workspaces;
# volume
", XF86AudioMute, exec, ${wpctl} set-mute @DEFAULT_AUDIO_SINK@ toggle"
", XF86AudioMicMute, exec, ${wpctl} set-mute @DEFAULT_AUDIO_SOURCE@ toggle"
];
bindl = [
# media controls
", XF86AudioPlay, exec, ${playerctl} play-pause"
", XF86AudioPrev, exec, ${playerctl} previous"
", XF86AudioNext, exec, ${playerctl} next"
bindle = [
# volume
", XF86AudioRaiseVolume, exec, ${wpctl} set-volume -l '1.0' @DEFAULT_AUDIO_SINK@ 6%+"
", XF86AudioLowerVolume, exec, ${wpctl} set-volume -l '1.0' @DEFAULT_AUDIO_SINK@ 6%-"
",XF86MonBrightnessUp, exec, ${brightnessctl} s 10%+"
",XF86MonBrightnessDown, exec, ${brightnessctl} s 10%-"
];
# volume
", XF86AudioMute, exec, ${wpctl} set-mute @DEFAULT_AUDIO_SINK@ toggle"
", XF86AudioMicMute, exec, ${wpctl} set-mute @DEFAULT_AUDIO_SOURCE@ toggle"
];
bindle = [
# volume
", XF86AudioRaiseVolume, exec, ${wpctl} set-volume -l '1.0' @DEFAULT_AUDIO_SINK@ 6%+"
", XF86AudioLowerVolume, exec, ${wpctl} set-volume -l '1.0' @DEFAULT_AUDIO_SINK@ 6%-"
",XF86MonBrightnessUp, exec, ${brightnessctl} s 10%+"
",XF86MonBrightnessDown, exec, ${brightnessctl} s 10%-"
];
};
};
}

View file

@ -1,4 +1,5 @@
{
osConfig,
lib,
pkgs,
...
@ -14,10 +15,11 @@ in {
];
wayland.windowManager.hyprland = {
enable = true;
enable = osConfig.niksos.desktop;
settings = {
env = [
"QT_WAYLAND_DISABLE_WINDOWDECORATION,1"
"NIXOS_OZONE_WL,1"
];
exec-once = [
"${uwsm} finalize"

View file

@ -1,8 +1,12 @@
{config, ...}: let
{
config,
osConfig,
...
}: let
inherit (config.lib.stylix.colors) base05;
in {
programs.hyprlock = {
enable = true;
enable = osConfig.niksos.desktop;
settings = {
general = {

View file

@ -1,3 +1,6 @@
{
services.mako.enable = true;
{osConfig, ...}: {
services.mako = {
enable = osConfig.niksos.desktop;
defaultTimeout = 5000;
};
}

View file

@ -4,6 +4,15 @@
./virt.nix
];
niksos = {
bluetooth = true;
fingerprint = true;
games = true;
desktop = true;
portable = true;
neovim = true;
};
home-manager.users.jsw.wayland.windowManager.hyprland.settings.monitor = ["eDP-1,2880x1920@120,0x0,1.5,vrr,1"];
services = {
fprintd.enable = true;

View file

@ -0,0 +1,3 @@
{
environment.defaultPackages = [];
}

View file

@ -1,20 +1,16 @@
# {
# lib,
# config,
# ...
# }: {
# options.niksos.bluetooth = lib.mkEnableOption;
#
# config = lib.mkIf config.niksos.bluetooth {
# hardware.bluetooth = {
# enable = true;
# input.General.ClassicBondedOnly = false;
# };
# };
# }
{
hardware.bluetooth = {
enable = true;
input.General.ClassicBondedOnly = false;
lib,
config,
pkgs,
...
}: {
options.niksos.bluetooth = lib.mkEnableOption "bluetooth related stuff.";
config = lib.mkIf config.niksos.bluetooth {
hardware.bluetooth = {
enable = true;
input.General.ClassicBondedOnly = false;
};
environment.systemPackages = [pkgs.bluetui];
};
}

View file

@ -1,3 +1,8 @@
{
services.fprintd.enable = true;
config,
lib,
...
}: {
options.niksos.fingerprint = lib.mkEnableOption "fingerprint support.";
config.services.fprintd.enable = config.niksos.fingerprint;
}

View file

@ -1,3 +1,3 @@
{
services.fwupd.enable = true;
{lib, ...}: {
services.fwupd.enable = lib.mkDefault true;
}

View file

@ -1,28 +1,26 @@
# networking configuration
{pkgs, ...}: {
imports = [
./avahi.nix
./tailscale.nix
];
networking = {
# use quad9 with DNS over TLS
nameservers = ["9.9.9.9#dns.quad9.net"];
networkmanager = {
enable = true;
dns = "systemd-resolved";
wifi.powersave = true;
};
};
users.groups.NetworkManager = {};
services = {
openssh = {
enable = true;
settings.UseDns = true;
};
# DNS resolver
resolved = {
enable = true;
dnsovertls = "opportunistic";
};
services.resolved = {
# DNS resolver that tries to encrypt dns traffic
enable = true;
dnsovertls = "opportunistic";
};
systemd.services.NetworkManager-wait-online.serviceConfig.ExecStart = ["" "${pkgs.networkmanager}/bin/nm-online -q"];
systemd.services.NetworkManager-wait-online.enable = false;
}

View file

@ -1,10 +1,10 @@
{
imports = [
./fish.nix
./fonts.nix
./games.nix
./home-manager.nix
./hyprland.nix
./neovim.nix
./polkit.nix
./xdg.nix
];

View file

@ -1,42 +0,0 @@
{}
# Migrated to home-manager stylix.
# {pkgs, ...}: {
# fonts = {
# packages = with pkgs; [
# # icon fonts
# material-symbols
#
# # Sans(Serif) fonts
# libertinus
# noto-fonts
# noto-fonts-cjk-sans
# noto-fonts-emoji
# roboto
# (google-fonts.override {fonts = ["Inter"];})
#
# # monospace fonts
# jetbrains-mono
#
# # nerdfonts
# nerd-fonts.jetbrains-mono
# nerd-fonts.symbols-only
# ];
#
# # causes more issues than it solves
# enableDefaultPackages = false;
#
# # user defined fonts
# # the reason there's Noto Color Emoji everywhere is to override DejaVu's
# # B&W emojis that would sometimes show instead of some Color emojis
# fontconfig.defaultFonts = let
# addAll = builtins.mapAttrs (_: v: v ++ ["Noto Color Emoji"]);
# in
# addAll {
# serif = ["Libertinus Serif"];
# sansSerif = ["Inter"];
# monospace = ["JetBrains Mono Nerd Font"];
# emoji = [];
# };
# };
# }

View file

@ -1,22 +1,64 @@
{pkgs, ...}: {
programs = {
gamescope = {
enable = true;
capSysNice = true;
args = [
"--rt"
"--expose-wayland"
];
};
{
config,
pkgs,
lib,
...
}: {
options.niksos.games = lib.mkEnableOption "gaming related stuff.";
config = lib.mkIf config.niksos.games {
nixpkgs.overlays = [
(final: prev: let
version = "1.4.2";
hash = "sha256-xe0qlbtt06CUK8bXyaGDtCcHOXpSnkbuvcxaDJjeS/c=";
npmHash = "sha256-/+NhlQydGS6+2jEjpbwycwKplVo/++wcdPiBNY3R3FI=";
cargoHash = "sha256-VwzGbm34t7mg9ndmTkht6Ho32NQ+6uxuPTKi3+VrhYo=";
in {
gale = prev.gale.overrideAttrs (new: old: {
src = prev.fetchFromGitHub {
inherit version hash;
owner = "Kesomannen";
repo = "gale";
rev = "1.4.2";
};
npmDeps = prev.fetchNpmDeps {
hash = npmHash;
name = "${new.pname}-${new.version}-npm-deps";
inherit (new) src;
};
cargoDeps = prev.rustPlatform.fetchCargoVendor {
inherit
(new)
pname
version
src
cargoRoot
;
hash = cargoHash;
};
});
})
];
users.users.jsw.packages = [pkgs.gale];
steam = {
enable = true;
programs = {
gamescope = {
enable = true;
capSysNice = true;
args = [
"--rt"
"--expose-wayland"
];
};
extraCompatPackages = [
pkgs.proton-ge-bin
];
steam = {
enable = true;
gamescopeSession.enable = true;
extraCompatPackages = [
pkgs.proton-ge-bin
];
gamescopeSession.enable = true;
};
};
};
}

View file

@ -1,10 +1,19 @@
{pkgs, ...}: {
programs.hyprland = {
enable = true;
withUWSM = true;
{
config,
pkgs,
lib,
...
}: {
options.niksos.desktop = lib.mkEnableOption "desktop related stuff.";
config = lib.mkIf config.niksos.desktop {
programs.hyprland = {
enable = true;
withUWSM = true;
};
environment.systemPackages = [
#FIXME: migrated to home-manager
pkgs.kitty # This is the default config's terminal and also my main one.
];
environment.sessionVariables.NIXOS_OZONE_WL = "1"; # Makes electron apps use wayland.
};
environment.systemPackages = [
pkgs.kitty # This is the default config's terminal and also my main one.
];
environment.sessionVariables.NIXOS_OZONE_WL = "1"; # Makes electron apps use wayland.
}

View file

@ -0,0 +1,4 @@
{lib, ...}: {
options.niksos.neovim = lib.mkEnableOption "the neovim editor";
# The actual config resides in NixOS/home/programs/neovim.
}

View file

@ -1,6 +1,11 @@
{pkgs, ...}: {
{
config,
lib,
pkgs,
...
}: {
systemd = {
user.services.polkit-gnome-authentication-agent-1 = {
user.services.polkit-gnome-authentication-agent-1 = lib.mkIf config.niksos.desktop {
description = "polkit-gnome-authentication-agent-1";
wantedBy = ["graphical-session.target"];
wants = ["graphical-session.target"];

View file

@ -1,5 +1,10 @@
{pkgs, ...}: {
xdg.portal = {
{
pkgs,
config,
lib,
...
}: {
xdg.portal = lib.mkIf config.niksos.desktop {
enable = true;
xdgOpenUsePortal = true;
config = {

View file

@ -4,6 +4,6 @@
./kanata.nix
./pipewire.nix
./power.nix
./tailscale.nix
./ssh.nix
];
}

View file

@ -3,21 +3,23 @@
lib,
...
}: {
# greetd display manager
services.greetd = let
session = {
command = "${lib.getExe config.programs.uwsm.package} start hyprland-uwsm.desktop";
user = "jsw";
};
in {
enable = true;
config = lib.mkIf config.niksos.desktop {
# greetd display manager
services.greetd = let
session = {
command = "${lib.getExe config.programs.uwsm.package} start hyprland-uwsm.desktop";
user = "jsw";
};
in {
enable = true;
settings = {
terminal.vt = 1;
default_session = session;
initial_session = session;
settings = {
terminal.vt = 1;
default_session = session;
initial_session = session;
};
};
programs.uwsm.enable = true;
};
programs.uwsm.enable = true;
}

View file

@ -1,11 +1,19 @@
{lib, ...}: {
services.pipewire = {
enable = true;
alsa.enable = true;
alsa.support32Bit = true;
jack.enable = true;
pulse.enable = true;
};
{
config,
lib,
pkgs,
...
}: {
config = lib.mkIf config.niksos.desktop {
services.pipewire = {
enable = true;
alsa.enable = true;
alsa.support32Bit = true;
jack.enable = true;
pulse.enable = true;
};
services.pulseaudio.enable = lib.mkForce false;
environment.systemPackages = [pkgs.pulsemixer];
services.pulseaudio.enable = lib.mkForce false; # gnome enables it
};
}

View file

@ -1,5 +1,10 @@
{
services = {
config,
lib,
...
}: {
options.niksos.portable = lib.mkEnableOption "battery optimisers";
config.services = lib.mkIf config.niksos.portable {
logind = {
powerKey = "suspend-then-hibernate";
powerKeyLongPress = "poweroff";

6
system/services/ssh.nix Normal file
View file

@ -0,0 +1,6 @@
{
services.openssh = {
enable = true;
settings.UseDns = true;
};
}

View file

@ -1,3 +0,0 @@
{
services.tailscale.enable = true;
}