allow for hosts using either stable or unstable and add host perseus

This commit is contained in:
2026-04-12 21:24:55 +02:00
parent 6af16c7143
commit 76aa69c13a
14 changed files with 772 additions and 98 deletions
Generated
+242 -14
View File
@@ -8,11 +8,33 @@
},
"locked": {
"dir": "pkgs/firefox-addons",
"lastModified": 1775880170,
"narHash": "sha256-63PLZ7lspPAqpV/+d0oNtDHLCWQf1MVFRG2DOeDK+nU=",
"lastModified": 1775966594,
"narHash": "sha256-pnRtaqTr7ut8dz8b04OWAanUM4tGhDUJz8SWmeTRp7U=",
"owner": "rycee",
"repo": "nur-expressions",
"rev": "28b164d30b5ab6820ef7e17281ae55c539ae9ff5",
"rev": "000d1d2322d28fa0a51b8db9f85a227aa5413b52",
"type": "gitlab"
},
"original": {
"dir": "pkgs/firefox-addons",
"owner": "rycee",
"repo": "nur-expressions",
"type": "gitlab"
}
},
"firefox-addons-unstable": {
"inputs": {
"nixpkgs": [
"nixpkgs-unstable"
]
},
"locked": {
"dir": "pkgs/firefox-addons",
"lastModified": 1775966594,
"narHash": "sha256-pnRtaqTr7ut8dz8b04OWAanUM4tGhDUJz8SWmeTRp7U=",
"owner": "rycee",
"repo": "nur-expressions",
"rev": "000d1d2322d28fa0a51b8db9f85a227aa5413b52",
"type": "gitlab"
},
"original": {
@@ -29,6 +51,27 @@
"nixpkgs"
]
},
"locked": {
"lastModified": 1768135262,
"narHash": "sha256-PVvu7OqHBGWN16zSi6tEmPwwHQ4rLPU9Plvs8/1TUBY=",
"owner": "hercules-ci",
"repo": "flake-parts",
"rev": "80daad04eddbbf5a4d883996a73f3f542fa437ac",
"type": "github"
},
"original": {
"owner": "hercules-ci",
"repo": "flake-parts",
"type": "github"
}
},
"flake-parts_2": {
"inputs": {
"nixpkgs-lib": [
"nixvim-unstable",
"nixpkgs"
]
},
"locked": {
"lastModified": 1772408722,
"narHash": "sha256-rHuJtdcOjK7rAHpHphUb1iCvgkU3GpfvicLMwwnfMT0=",
@@ -43,6 +86,24 @@
"type": "github"
}
},
"flake-utils": {
"inputs": {
"systems": "systems"
},
"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"
}
},
"home-manager": {
"inputs": {
"nixpkgs": [
@@ -50,11 +111,32 @@
]
},
"locked": {
"lastModified": 1775900011,
"narHash": "sha256-QUGu6CJYFQ5AWVV0n3/FsJyV+1/gj7HSDx68/SX9pwM=",
"lastModified": 1775425411,
"narHash": "sha256-KY6HsebJHEe5nHOWP7ur09mb0drGxYSzE3rQxy62rJo=",
"owner": "nix-community",
"repo": "home-manager",
"rev": "b0569dc6ec1e6e7fefd8f6897184e4c191cd768e",
"rev": "0d02ec1d0a05f88ef9e74b516842900c41f0f2fe",
"type": "github"
},
"original": {
"owner": "nix-community",
"ref": "release-25.11",
"repo": "home-manager",
"type": "github"
}
},
"home-manager-unstable": {
"inputs": {
"nixpkgs": [
"nixpkgs-unstable"
]
},
"locked": {
"lastModified": 1776015217,
"narHash": "sha256-PUb9TTfqsA1g+aHJt5s8tIP7QdX8xHeOtDMPVRuylfM=",
"owner": "nix-community",
"repo": "home-manager",
"rev": "f6196e5b4d3f0168d09feab9ba678fa18ca58cbb",
"type": "github"
},
"original": {
@@ -63,7 +145,51 @@
"type": "github"
}
},
"ixx": {
"inputs": {
"flake-utils": [
"nixvim",
"nuschtosSearch",
"flake-utils"
],
"nixpkgs": [
"nixvim",
"nuschtosSearch",
"nixpkgs"
]
},
"locked": {
"lastModified": 1754860581,
"narHash": "sha256-EM0IE63OHxXCOpDHXaTyHIOk2cNvMCGPqLt/IdtVxgk=",
"owner": "NuschtOS",
"repo": "ixx",
"rev": "babfe85a876162c4acc9ab6fb4483df88fa1f281",
"type": "github"
},
"original": {
"owner": "NuschtOS",
"ref": "v0.1.1",
"repo": "ixx",
"type": "github"
}
},
"nixpkgs": {
"locked": {
"lastModified": 1775811116,
"narHash": "sha256-t+HZK42pB6N+i5RGbuy7Xluez/VvWbembBdvzsc23Ss=",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "54170c54449ea4d6725efd30d719c5e505f1c10e",
"type": "github"
},
"original": {
"owner": "nixos",
"ref": "nixos-25.11",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs-unstable": {
"locked": {
"lastModified": 1775710090,
"narHash": "sha256-ar3rofg+awPB8QXDaFJhJ2jJhu+KqN/PRCXeyuXR76E=",
@@ -85,14 +211,38 @@
"nixpkgs": [
"nixpkgs"
],
"systems": "systems"
"nuschtosSearch": "nuschtosSearch",
"systems": "systems_2"
},
"locked": {
"lastModified": 1775837497,
"narHash": "sha256-L17VI03w/wVXvc1SK7EI1muLqHxD3+esYPPzgQvvdOE=",
"lastModified": 1769049374,
"narHash": "sha256-h0Os2qqNyycDY1FyZgtbn28VF1ySP74/n0f+LDd8j+w=",
"owner": "nix-community",
"repo": "nixvim",
"rev": "a587a96a48c705609bfd2ad23f9ae5961eb0d373",
"rev": "b8f76bf5751835647538ef8784e4e6ee8deb8f95",
"type": "github"
},
"original": {
"owner": "nix-community",
"ref": "nixos-25.11",
"repo": "nixvim",
"type": "github"
}
},
"nixvim-unstable": {
"inputs": {
"flake-parts": "flake-parts_2",
"nixpkgs": [
"nixpkgs-unstable"
],
"systems": "systems_3"
},
"locked": {
"lastModified": 1775988703,
"narHash": "sha256-gqIk6zAIJ0otdoWWjHeE51ed8ZlCkv4Yz5YD0+JfCl0=",
"owner": "nix-community",
"repo": "nixvim",
"rev": "05a8ad9f006936bf451043afb80821c204264a48",
"type": "github"
},
"original": {
@@ -101,13 +251,41 @@
"type": "github"
}
},
"nuschtosSearch": {
"inputs": {
"flake-utils": "flake-utils",
"ixx": "ixx",
"nixpkgs": [
"nixvim",
"nixpkgs"
]
},
"locked": {
"lastModified": 1768249818,
"narHash": "sha256-ANfn5OqIxq3HONPIXZ6zuI5sLzX1sS+2qcf/Pa0kQEc=",
"owner": "NuschtOS",
"repo": "search",
"rev": "b6f77b88e9009bfde28e2130e218e5123dc66796",
"type": "github"
},
"original": {
"owner": "NuschtOS",
"repo": "search",
"type": "github"
}
},
"root": {
"inputs": {
"firefox-addons": "firefox-addons",
"firefox-addons-unstable": "firefox-addons-unstable",
"home-manager": "home-manager",
"home-manager-unstable": "home-manager-unstable",
"nixpkgs": "nixpkgs",
"nixpkgs-unstable": "nixpkgs-unstable",
"nixvim": "nixvim",
"sops-nix": "sops-nix"
"nixvim-unstable": "nixvim-unstable",
"sops-nix": "sops-nix",
"sops-nix-unstable": "sops-nix-unstable"
}
},
"sops-nix": {
@@ -117,11 +295,31 @@
]
},
"locked": {
"lastModified": 1775682595,
"narHash": "sha256-0E9PohY/VuESLq0LR4doaH7hTag513sDDW5n5qmHd1Q=",
"lastModified": 1775971308,
"narHash": "sha256-VKp9bhVSm0bT6JWctFy06ocqxGGnWHi1NfoE90IgIcY=",
"owner": "Mic92",
"repo": "sops-nix",
"rev": "d2e8438d5886e92bc5e7c40c035ab6cae0c41f76",
"rev": "31ac5fe5d015f76b54058c69fcaebb66a55871a4",
"type": "github"
},
"original": {
"owner": "Mic92",
"repo": "sops-nix",
"type": "github"
}
},
"sops-nix-unstable": {
"inputs": {
"nixpkgs": [
"nixpkgs-unstable"
]
},
"locked": {
"lastModified": 1775971308,
"narHash": "sha256-VKp9bhVSm0bT6JWctFy06ocqxGGnWHi1NfoE90IgIcY=",
"owner": "Mic92",
"repo": "sops-nix",
"rev": "31ac5fe5d015f76b54058c69fcaebb66a55871a4",
"type": "github"
},
"original": {
@@ -144,6 +342,36 @@
"repo": "default",
"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"
}
}
},
"root": "root",
+67 -23
View File
@@ -1,15 +1,16 @@
{
description = "L config";
inputs = {
nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
nixpkgs-unstable.url = "github:nixos/nixpkgs/nixos-unstable";
nixpkgs.url = "github:nixos/nixpkgs/nixos-25.11";
home-manager = {
url = "github:nix-community/home-manager";
url = "github:nix-community/home-manager?ref=release-25.11";
inputs.nixpkgs.follows = "nixpkgs";
};
nixvim = {
url = "github:nix-community/nixvim";
url = "github:nix-community/nixvim?ref=nixos-25.11";
inputs.nixpkgs.follows = "nixpkgs";
};
@@ -22,6 +23,26 @@
url = "gitlab:rycee/nur-expressions?dir=pkgs/firefox-addons";
inputs.nixpkgs.follows = "nixpkgs";
};
home-manager-unstable = {
url = "github:nix-community/home-manager";
inputs.nixpkgs.follows = "nixpkgs-unstable";
};
nixvim-unstable = {
url = "github:nix-community/nixvim";
inputs.nixpkgs.follows = "nixpkgs-unstable";
};
sops-nix-unstable = {
url = "github:Mic92/sops-nix";
inputs.nixpkgs.follows = "nixpkgs-unstable";
};
firefox-addons-unstable = {
url = "gitlab:rycee/nur-expressions?dir=pkgs/firefox-addons";
inputs.nixpkgs.follows = "nixpkgs-unstable";
};
};
outputs =
@@ -33,30 +54,53 @@
nixosConfigurations =
let
nixosSystem =
name: hostConfig:
inputs.nixpkgs.lib.nixosSystem {
specialArgs = {
inherit inputs system;
name: stable: hostConfig:
if stable then
inputs.nixpkgs.lib.nixosSystem {
specialArgs = {
inherit inputs system name;
};
modules = [
./hosts/${name}/configuration.nix
inputs.sops-nix.nixosModules.sops
inputs.home-manager.nixosModules.home-manager
{
home-manager.useUserPackages = true;
home-manager.users.vbm = ./hosts/${name}/home.nix;
home-manager.extraSpecialArgs = { inherit inputs system stable; };
home-manager.sharedModules = [
inputs.nixvim.homeModules.nixvim
inputs.sops-nix.homeManagerModules.sops
];
}
];
}
else
inputs.nixpkgs-unstable.lib.nixosSystem {
specialArgs = {
inherit inputs system name;
};
modules = [
./hosts/${name}/configuration.nix
inputs.sops-nix-unstable.nixosModules.sops
inputs.home-manager-unstable.nixosModules.home-manager
{
home-manager-unstable.useUserPackages = true;
home-manager-unstable.users.vbm = ./hosts/${name}/home.nix;
home-manager-unstable.extraSpecialArgs = { inherit inputs system stable; };
home-manager-unstable.sharedModules = [
inputs.nixvim-unstable.homeModules.nixvim
inputs.sops-nix-unstable.homeManagerModules.sops
];
}
];
};
modules = [
./hosts/${name}/configuration.nix
inputs.sops-nix.nixosModules.sops
inputs.home-manager.nixosModules.home-manager
{
home-manager.useUserPackages = true;
home-manager.users.vbm = ./hosts/${name}/home.nix;
home-manager.extraSpecialArgs = { inherit inputs system; };
home-manager.sharedModules = [
inputs.nixvim.homeModules.nixvim
inputs.sops-nix.homeManagerModules.sops
];
}
];
};
in
{
talos = nixosSystem "talos" { };
talos = nixosSystem "talos" false { };
perseus = nixosSystem "perseus" true { };
};
};
}
+6 -15
View File
@@ -2,6 +2,7 @@
lib,
pkgs,
config,
stable,
...
}:
{
@@ -51,6 +52,8 @@
mime.enable = true;
mimeApps.enable = true;
userDirs.enable = true;
}
// lib.optionalAttrs (!stable) {
userDirs.setSessionVariables = true;
};
@@ -75,20 +78,6 @@
services.syncthing.enable = true;
services.batsignal = {
enable = true;
extraArgs = [
"-w"
"35"
"-c"
"10"
"-d"
"5"
"-f"
"65"
];
};
services.mpd = {
enable = true;
};
@@ -177,7 +166,7 @@
user = {
name = "Vegard Bieker Matthey";
email = "VegardMatthey@protonmail.com";
signingkey = "~/.ssh/pvv_gitea_sign_id_ed25519.pub";
signingkey = "~/.ssh/pvv_gitea_id_ed25519.pub";
};
commit.gpgsign = true;
tag.gpgsign = true;
@@ -210,6 +199,8 @@
};
settings = {
show_banner = false;
}
// lib.optionalAttrs (!stable) {
show_hints = false;
};
environmentVariables = config.home.sessionVariables;
+41 -37
View File
@@ -1,4 +1,41 @@
{ ... }:
{ lib, stable, ... }:
let
colors = {
cursor = "11111b f5e0dc";
foreground = "cdd6f4";
background = "1e1e2e";
regular0 = "45475a";
regular1 = "f38ba8";
regular2 = "a6e3a1";
regular3 = "f9e2af";
regular4 = "89b4fa";
regular5 = "f5c2e7";
regular6 = "94e2d5";
regular7 = "bac2de";
bright0 = "585b70";
bright1 = "f38ba8";
bright2 = "a6e3a1";
bright3 = "f9e2af";
bright4 = "89b4fa";
bright5 = "f5c2e7";
bright6 = "94e2d5";
bright7 = "a6adc8";
"16" = "fab387";
"17" = "f5e0dc";
selection-foreground = "cdd6f4";
selection-background = "414356";
search-box-no-match = "11111b f38ba8";
search-box-match = "cdd6f4 313244";
jump-labels = "11111b fab387";
urls = "89b4fa";
};
in
{
programs.foot = {
enable = true;
@@ -11,41 +48,8 @@
hide-when-typing = "yes";
};
colors-dark = {
cursor = "11111b f5e0dc";
foreground = "cdd6f4";
background = "1e1e2e";
regular0 = "45475a";
regular1 = "f38ba8";
regular2 = "a6e3a1";
regular3 = "f9e2af";
regular4 = "89b4fa";
regular5 = "f5c2e7";
regular6 = "94e2d5";
regular7 = "bac2de";
bright0 = "585b70";
bright1 = "f38ba8";
bright2 = "a6e3a1";
bright3 = "f9e2af";
bright4 = "89b4fa";
bright5 = "f5c2e7";
bright6 = "94e2d5";
bright7 = "a6adc8";
"16" = "fab387";
"17" = "f5e0dc";
selection-foreground = "cdd6f4";
selection-background = "414356";
search-box-no-match = "11111b f38ba8";
search-box-match = "cdd6f4 313244";
jump-labels = "11111b fab387";
urls = "89b4fa";
};
};
}
// lib.optionalAttrs stable { inherit colors; }
// lib.optionalAttrs (!stable) { colors-dark = colors; };
};
}
+2 -1
View File
@@ -2,10 +2,11 @@
pkgs,
inputs,
system,
stable,
...
}:
let
channel = "unstable";
channel = if stable then "25.11" else "unstable";
in
{
programs.librewolf = {
+12 -7
View File
@@ -1,4 +1,4 @@
{ ... }:
{ lib, stable, ... }:
{
programs.nixvim = {
enable = true;
@@ -15,10 +15,6 @@
mouse = "";
};
globals.mapleader = " ";
lsp-format = {
enable = true;
lspServersToEnable = "all";
};
plugins.lsp = {
enable = true;
servers = {
@@ -38,17 +34,20 @@
};
};
};
plugins.tresitter.enable = true;
# There has been some drama, the repo was archived and stuff.
# plugins.tresitter.enable = true;
plugins.telescope.enable = true;
plugins.fidget.enable = true;
plugins.cmp = {
enable = false;
autEnableSources = true;
settings.sources = [
{ name = "nvim_lsp"; }
{ name = "path"; }
{ name = "buffer"; }
];
}
// lib.optionalAttrs (!stable) {
autEnableSources = true;
};
plugins.web-devicons.enable = true;
keymaps = [
@@ -65,5 +64,11 @@
key = "<leader>ff";
}
];
}
// lib.optionalAttrs (!stable) {
lsp-format = {
enable = true;
lspServersToEnable = "all";
};
};
}
+212
View File
@@ -0,0 +1,212 @@
/* Taken from https://github.com/djpohly/dwl/issues/466 */
#define COLOR(hex) { ((hex >> 24) & 0xFF) / 255.0f, \
((hex >> 16) & 0xFF) / 255.0f, \
((hex >> 8) & 0xFF) / 255.0f, \
(hex & 0xFF) / 255.0f }
/* appearance */
static const int sloppyfocus = 1; /* focus follows mouse */
static const int bypass_surface_visibility = 0; /* 1 means idle inhibitors will disable idle tracking even if it's surface isn't visible */
static const unsigned int borderpx = 1; /* border pixel of windows */
static const int showbar = 1; /* 0 means no bar */
static const int topbar = 1; /* 0 means bottom bar */
static const char *fonts[] = {"Hack:size=10"};
static const float rootcolor[] = COLOR(0x000000ff);
static const int refresh_rate = 239972; /* mHz 0 means auto */
static const int s_width = 2560 /* 0 means auto */;
static const int s_height = 1440 /* 0 means auto */;
/* This conforms to the xdg-protocol. Set the alpha to zero to restore the old behavior */
static const float fullscreen_bg[] = {0.0f, 0.0f, 0.0f, 1.0f}; /* You can also use glsl colors */
static uint32_t colors[][3] = {
/* fg bg border */
[SchemeNorm] = { 0xbbbbbbff, 0x222222ff, 0x444444ff },
[SchemeSel] = { 0xeeeeeeff, 0x005577ff, 0x005577ff },
[SchemeUrg] = { 0, 0, 0x770000ff },
};
/* tagging */
static char *tags[] = { "1", "2", "3", "4", "5", "6", "7", "8", "9" };
/* logging */
static int log_level = WLR_ERROR;
static const Rule rules[] = {
/* app_id title tags mask isfloating monitor */
{ "Gimp_EXAMPLE", NULL, 0, 1, -1 }, /* Start on currently visible tags floating, not tiled */
{ "firefox_EXAMPLE", NULL, 1 << 8, 0, -1 }, /* Start on ONLY tag "9" */
/* default/example rule: can be changed but cannot be eliminated; at least one rule must exist */
};
/* layout(s) */
static const Layout layouts[] = {
/* symbol arrange function */
{ "[]=", tile },
{ "><>", NULL }, /* no layout function means floating behavior */
{ "[M]", monocle },
};
/* monitors */
/* (x=-1, y=-1) is reserved as an "autoconfigure" monitor position indicator
* WARNING: negative values other than (-1, -1) cause problems with Xwayland clients due to
* https://gitlab.freedesktop.org/xorg/xserver/-/issues/899 */
static const MonitorRule monrules[] = {
/* name mfact nmaster scale layout rotate/reflect x y
* example of a HiDPI laptop monitor:
{ "eDP-1", 0.5f, 1, 2, &layouts[0], WL_OUTPUT_TRANSFORM_NORMAL, -1, -1 }, */
{ "eDP-1", 0.5f, 1, 2, &layouts[0], WL_OUTPUT_TRANSFORM_NORMAL, -1, -1 },
{ NULL, 0.55f, 1, 1, &layouts[0], WL_OUTPUT_TRANSFORM_NORMAL, -1, -1 },
/* default monitor rule: can be changed but cannot be eliminated; at least one monitor rule must exist */
};
/* keyboard */
static const struct xkb_rule_names xkb_rules = {
/* can specify fields: rules, model, layout, variant, options */
/* example:
.options = "ctrl:nocaps",
*/
.layout = "no",
.options = NULL,
};
static const int repeat_rate = 25;
static const int repeat_delay = 600;
/* Trackpad */
static const int tap_to_click = 1;
static const int tap_and_drag = 1;
static const int drag_lock = 1;
static const int natural_scrolling = 0;
static const int disable_while_typing = 1;
static const int left_handed = 0;
static const int middle_button_emulation = 0;
/* You can choose between:
LIBINPUT_CONFIG_SCROLL_NO_SCROLL
LIBINPUT_CONFIG_SCROLL_2FG
LIBINPUT_CONFIG_SCROLL_EDGE
LIBINPUT_CONFIG_SCROLL_ON_BUTTON_DOWN
*/
static const enum libinput_config_scroll_method scroll_method = LIBINPUT_CONFIG_SCROLL_2FG;
/* You can choose between:
LIBINPUT_CONFIG_CLICK_METHOD_NONE
LIBINPUT_CONFIG_CLICK_METHOD_BUTTON_AREAS
LIBINPUT_CONFIG_CLICK_METHOD_CLICKFINGER
*/
static const enum libinput_config_click_method click_method = LIBINPUT_CONFIG_CLICK_METHOD_BUTTON_AREAS;
/* You can choose between:
LIBINPUT_CONFIG_SEND_EVENTS_ENABLED
LIBINPUT_CONFIG_SEND_EVENTS_DISABLED
LIBINPUT_CONFIG_SEND_EVENTS_DISABLED_ON_EXTERNAL_MOUSE
*/
static const uint32_t send_events_mode = LIBINPUT_CONFIG_SEND_EVENTS_ENABLED;
/* You can choose between:
LIBINPUT_CONFIG_ACCEL_PROFILE_FLAT
LIBINPUT_CONFIG_ACCEL_PROFILE_ADAPTIVE
*/
static const enum libinput_config_accel_profile accel_profile = LIBINPUT_CONFIG_ACCEL_PROFILE_FLAT;
static const double accel_speed = -0.75;
/* You can choose between:
LIBINPUT_CONFIG_TAP_MAP_LRM -- 1/2/3 finger tap maps to left/right/middle
LIBINPUT_CONFIG_TAP_MAP_LMR -- 1/2/3 finger tap maps to left/middle/right
*/
static const enum libinput_config_tap_button_map button_map = LIBINPUT_CONFIG_TAP_MAP_LRM;
/* If you want to use the windows key for MODKEY, use WLR_MODIFIER_LOGO */
#define MODKEY WLR_MODIFIER_LOGO
#define TAGKEYS(KEY,SKEY,TAG) \
{ MODKEY, KEY, view, {.ui = 1 << TAG} }, \
{ MODKEY|WLR_MODIFIER_CTRL, KEY, toggleview, {.ui = 1 << TAG} }, \
{ MODKEY|WLR_MODIFIER_SHIFT, SKEY, tag, {.ui = 1 << TAG} }, \
{ MODKEY|WLR_MODIFIER_CTRL|WLR_MODIFIER_SHIFT,SKEY,toggletag, {.ui = 1 << TAG} }
/* helper for spawning shell commands in the pre dwm-5.0 fashion */
#define SHCMD(cmd) { .v = (const char*[]){ "/bin/sh", "-c", cmd, NULL } }
/* commands */
static const char *termcmd[] = { "foot", NULL };
static const char *menucmd[] = { "wmenu-drun", "-i", "-f", "Hack 9", NULL };
static const char *loudcmd[] = { "wpctl", "set-volume", "@DEFAULT_AUDIO_SINK@", "1%+", NULL };
static const char *quietcmd[] = { "wpctl", "set-volume", "@DEFAULT_AUDIO_SINK@", "1%-", NULL };
static const char *silencecmd[] = { "wpctl", "set-mute", "@DEFAULT_AUDIO_SINK@", "toggle", NULL };
static const char *mutecmd[] = { "wpctl", "set-mute", "@DEFAULT_AUDIO_SOURCE@", "toggle", NULL };
static const char *brightcmd[] = { "brightnessctl", "set", "+5%", NULL };
static const char *dimcmd[] = { "brightnessctl", "set", "5%-", NULL };
static const char *shutdowncmd[] = { "shutdown", "now", NULL };
static const Key keys[] = {
/* Note that Shift changes certain key codes: 2 -> at, etc. */
/* modifier key function argument */
{ MODKEY, XKB_KEY_p, spawn, {.v = menucmd} },
{ MODKEY|WLR_MODIFIER_SHIFT, XKB_KEY_Return, spawn, {.v = termcmd} },
/* custom */
/* modifier key function argument */
{ 0, XKB_KEY_XF86AudioRaiseVolume, spawn, {.v = loudcmd} },
{ 0, XKB_KEY_XF86AudioLowerVolume, spawn, {.v = quietcmd} },
{ 0, XKB_KEY_XF86AudioMute, spawn, {.v = silencecmd} },
{ 0, XKB_KEY_XF86AudioMicMute, spawn, {.v = mutecmd} },
{ 0, XKB_KEY_XF86MonBrightnessUp, spawn, {.v = brightcmd} },
{ 0, XKB_KEY_XF86MonBrightnessDown, spawn, {.v = dimcmd} },
{ MODKEY|WLR_MODIFIER_SHIFT, XKB_KEY_Delete, spawn, {.v = shutdowncmd} },
/* custom */
{ MODKEY, XKB_KEY_b, togglebar, {0} },
{ MODKEY, XKB_KEY_j, focusstack, {.i = +1} },
{ MODKEY, XKB_KEY_k, focusstack, {.i = -1} },
{ MODKEY, XKB_KEY_i, incnmaster, {.i = +1} },
{ MODKEY, XKB_KEY_d, incnmaster, {.i = -1} },
{ MODKEY, XKB_KEY_h, setmfact, {.f = -0.05f} },
{ MODKEY, XKB_KEY_l, setmfact, {.f = +0.05f} },
{ MODKEY, XKB_KEY_Return, zoom, {0} },
{ MODKEY, XKB_KEY_Tab, view, {0} },
{ MODKEY|WLR_MODIFIER_SHIFT, XKB_KEY_c, killclient, {0} },
{ MODKEY, XKB_KEY_t, setlayout, {.v = &layouts[0]} },
{ MODKEY, XKB_KEY_f, setlayout, {.v = &layouts[1]} },
{ MODKEY, XKB_KEY_m, setlayout, {.v = &layouts[2]} },
{ MODKEY, XKB_KEY_space, setlayout, {0} },
{ MODKEY|WLR_MODIFIER_SHIFT, XKB_KEY_space, togglefloating, {0} },
{ MODKEY, XKB_KEY_e, togglefullscreen, {0} },
{ MODKEY, XKB_KEY_0, view, {.ui = ~0} },
{ MODKEY|WLR_MODIFIER_SHIFT, XKB_KEY_equal, tag, {.ui = ~0} },
{ MODKEY, XKB_KEY_comma, focusmon, {.i = WLR_DIRECTION_LEFT} },
{ MODKEY, XKB_KEY_period, focusmon, {.i = WLR_DIRECTION_RIGHT} },
{ MODKEY|WLR_MODIFIER_SHIFT, XKB_KEY_less, tagmon, {.i = WLR_DIRECTION_LEFT} },
{ MODKEY|WLR_MODIFIER_SHIFT, XKB_KEY_greater, tagmon, {.i = WLR_DIRECTION_RIGHT} },
TAGKEYS( XKB_KEY_1, XKB_KEY_exclam, 0),
TAGKEYS( XKB_KEY_2, XKB_KEY_quotedbl, 1),
TAGKEYS( XKB_KEY_3, XKB_KEY_numbersign, 2),
TAGKEYS( XKB_KEY_4, XKB_KEY_currency, 3),
TAGKEYS( XKB_KEY_5, XKB_KEY_percent, 4),
TAGKEYS( XKB_KEY_6, XKB_KEY_ampersand, 5),
TAGKEYS( XKB_KEY_7, XKB_KEY_slash, 6),
TAGKEYS( XKB_KEY_8, XKB_KEY_parenleft, 7),
TAGKEYS( XKB_KEY_9, XKB_KEY_parenright, 8),
{ MODKEY|WLR_MODIFIER_SHIFT, XKB_KEY_q, quit, {0} },
/* Ctrl-Alt-Backspace and Ctrl-Alt-Fx used to be handled by X server */
{ WLR_MODIFIER_CTRL|WLR_MODIFIER_ALT,XKB_KEY_Terminate_Server, quit, {0} },
/* Ctrl-Alt-Fx is used to switch to another VT, if you don't know what a VT is
* do not remove them.
*/
#define CHVT(n) { WLR_MODIFIER_CTRL|WLR_MODIFIER_ALT,XKB_KEY_XF86Switch_VT_##n, chvt, {.ui = (n)} }
CHVT(1), CHVT(2), CHVT(3), CHVT(4), CHVT(5), CHVT(6),
CHVT(7), CHVT(8), CHVT(9), CHVT(10), CHVT(11), CHVT(12),
};
static const Button buttons[] = {
{ ClkLtSymbol, 0, BTN_LEFT, setlayout, {.v = &layouts[0]} },
{ ClkLtSymbol, 0, BTN_RIGHT, setlayout, {.v = &layouts[2]} },
{ ClkTitle, 0, BTN_MIDDLE, zoom, {0} },
{ ClkStatus, 0, BTN_MIDDLE, spawn, {.v = termcmd} },
{ ClkClient, MODKEY, BTN_LEFT, moveresize, {.ui = CurMove} },
{ ClkClient, MODKEY, BTN_MIDDLE, togglefloating, {0} },
{ ClkClient, MODKEY, BTN_RIGHT, moveresize, {.ui = CurResize} },
{ ClkTagBar, 0, BTN_LEFT, view, {0} },
{ ClkTagBar, 0, BTN_RIGHT, toggleview, {0} },
{ ClkTagBar, MODKEY, BTN_LEFT, tag, {0} },
{ ClkTagBar, MODKEY, BTN_RIGHT, toggletag, {0} },
};
@@ -0,0 +1,9 @@
const unsigned int interval = 1000;
static const char unknown_str[] = "n/a";
#define MAXLEN 2048
static const struct arg args[] = {
{ run_command, "VOL: %s | ", "wpctl get-volume @DEFAULT_AUDIO_SINK@ | sed 's/Volume: //'" },
{ disk_free, "FDS: %s | ", "/" },
{ cpu_perc, "CPU: %s%% | ", NULL },
{ datetime, "%s", "%F %T" },
};
+97
View File
@@ -0,0 +1,97 @@
{
pkgs,
lib,
name,
...
}:
{
imports = [
./hardware-configuration.nix
../../base.nix
];
networking.hostName = name;
nixpkgs.overlays = import ../../overlays.nix ++ import ./overlays.nix;
services.thermald.enable = true;
fonts.fontconfig.enable = true;
fonts.fontconfig.defaultFonts = {
monospace = [
"Hack"
];
sansSerif = [
"Notonoto Sans"
"Noto Sans"
];
serif = [
"Notonoto Serif"
"Noto Serif"
];
emoji = [
"Noto Color Emoji"
];
};
fonts.packages = with pkgs; [
hack-font
nerd-fonts.hack
noto-fonts
noto-fonts-cjk-sans
noto-fonts-cjk-serif
noto-fonts-color-emoji
];
services.pipewire = {
enable = true;
pulse.enable = true;
audio.enable = true;
};
services.libinput.enable = true;
services.udisks2.enable = true;
users.users.vbm = {
packages = with pkgs; [
(import ../../scripts/dwls.nix { inherit pkgs lib; })
wmenu
dwl
tree
dust
eza
wl-clipboard
ripgrep
fd
keepassxc
btop
fluffychat
cargo
rustc
upx
gcc
nixfmt
imv
unzip
zip
qbittorrent
typst
calibre
signal-desktop
rustfmt
umu-launcher
cachix
grim
slurp
brightnessctl
];
};
security.rtkit.enable = true;
# Necessary for gtk config, see: https://github.com/nix-community/home-manager/issues/3113
programs.dconf.enable = true;
# For more information, see `man configuration.nix` or https://nixos.org/manual/nixos/stable/options#opt-system.stateVersion .
system.stateVersion = "25.11"; # Did you read the comment?
}
+34
View File
@@ -0,0 +1,34 @@
# 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 = [ "nvme" "xhci_pci" "ahci" "usbhid" "usb_storage" "sd_mod" ];
boot.initrd.kernelModules = [ ];
boot.kernelModules = [ ];
boot.extraModulePackages = [ ];
fileSystems."/" =
{ device = "/dev/disk/by-uuid/11e6969c-4d63-4fb4-99c8-5f1c7fc9f7f7";
fsType = "ext4";
};
fileSystems."/boot" =
{ device = "/dev/disk/by-uuid/3FC4-6E10";
fsType = "vfat";
options = [ "fmask=0022" "dmask=0022" ];
};
swapDevices = [ ];
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
hardware.cpu.amd.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
hardware.graphics.enable = true;
hardware.graphics.enable32Bit = true;
}
+20
View File
@@ -0,0 +1,20 @@
{
...
}:
{
imports = [
../../home/home.nix
../../home/programs/foot.nix
../../home/programs/neovim.nix
../../home/programs/retroarch.nix
../../home/programs/librewolf.nix
];
home = {
stateVersion = "25.11";
};
home.file.".ssh/allowed_signers".text =
"* ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIF2DTzB0rAnUUrSx/xOcyn1WL6Gp088yC/p93YSxkMfQ vbm@nixos-radeon";
}
+14
View File
@@ -0,0 +1,14 @@
[
(final: prev: {
dwl = (
prev.dwl.override {
configH = ./config_files/dwl/config.h;
enableXWayland = true;
}
);
})
(final: prev: {
slstatus = prev.slstatus.override { conf = ./config_files/slstatus/config.h; };
})
]
+2 -1
View File
@@ -1,6 +1,7 @@
{
pkgs,
lib,
name,
...
}:
{
@@ -9,7 +10,7 @@
../../base.nix
];
networking.hostName = "talos";
networking.hostName = name;
nixpkgs.overlays = import ../../overlays.nix ++ import ./overlays.nix;
+14
View File
@@ -18,4 +18,18 @@
home.file.".ssh/allowed_signers".text =
"* ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIFI0JYlUwTrHgvjvd4q03ZxDOmoQJ8rSAUDw0dlUMAXb vbm@nixos-xenon";
services.batsignal = {
enable = true;
extraArgs = [
"-w"
"35"
"-c"
"10"
"-d"
"5"
"-f"
"65"
];
};
}