/nix/store/dlwqlnbaj5vfm9aw20r1yxk8y56lmgif-repo/header.tmpl

Compare commits

...

11 commits

Author SHA1 Message Date
faukah
ee9ccdb234 personal_info: updates 2025-09-02 20:37:38 +02:00
faukah
82f75ebcff nixpkgs: allow aliases 2025-09-02 20:37:27 +02:00
faukah
01057a2d17 nix: remove bash-prompt-suffix 2025-09-02 20:37:13 +02:00
faukah
573b7cae24 git: change signingkey 2025-09-02 20:36:59 +02:00
faukah
c0d43ca29e portals: switch to gnome and gtk as deskop portals 2025-09-02 20:36:49 +02:00
faukah
54fcf5b413 niri: add niri-tag 2025-09-02 20:36:00 +02:00
faukah
fa85c44299 direnv: enable fish integration 2025-09-02 20:35:43 +02:00
faukah
ccc0e53cda jujutsu: init 2025-09-02 20:35:27 +02:00
faukah
80e65d5c34 default.nix: cleanup 2025-09-02 20:34:01 +02:00
faukah
9e39f5c31e nushell: changes 2025-09-02 20:33:50 +02:00
faukah
6575d7b21e boot: disable Containers 2025-09-02 20:33:38 +02:00
19 changed files with 540 additions and 164 deletions

View file

@ -1,22 +1,47 @@
let
inherit (builtins) filter mapAttrs;
inherit (builtins)
filter
fromJSON
readFile
;
# https://github.com/andir/npins?tab=readme-ov-file#using-the-nixpkgs-fetchers
src = import ./npins;
pkgs = import src.nixpkgs { };
sources = mapAttrs (_: v: v { inherit pkgs; }) src;
/*
The *sole* use for the flake in this repository is easy locking
of dependencies and inputs for nil, my lsp.
I parse the flake.lock here, extract the Lix project's
flake-compat, which features lazy store copies, aka lazy trees.
Using that, I can use Lix as my CppNix implementation
AND have lazy trees for basically free.
*/
lockFile = fromJSON (readFile ./flake.lock);
node = lockFile.nodes.root.inputs.__flake-compat;
inherit (lockFile.nodes.${node}.locked) narHash rev url;
flake-compat = builtins.fetchTarball {
url = "${url}/archive/${rev}.tar.gz";
sha256 = narHash;
};
flake = import flake-compat {
src = ./.;
# Prevent eager store copies
copySourceTreeToStore = false;
useBuiltinsFetchTree = true;
};
inherit (flake) inputs;
pkgs = import inputs.nixpkgs { };
inherit (pkgs) lib;
inherit (lib.filesystem) listFilesRecursive;
inherit (lib.strings) hasSuffix;
inherit (lib.attrsets) genAttrs;
nixosSystem = import (sources.nixpkgs + "/nixos/lib/eval-config.nix");
nixosSystem = import (inputs.nixpkgs.outPath + "/nixos/lib/eval-config.nix");
mkSystem =
hostname:
nixosSystem {
specialArgs = {
inherit sources;
inherit inputs;
self = ./.;
};
modules = [
@ -24,6 +49,12 @@ let
./hosts/${hostname}
]
++ ((listFilesRecursive ./modules) |> filter (hasSuffix ".mod.nix"));
lib = inputs.nixpkgs.lib.extend (
final: prev: {
getFlakePkg = p: p.packages.${builtins.currentSystem}.default;
getFlakePkg' = p: n: p.packages.${builtins.currentSystem}.${n};
}
);
};
hosts = [

272
flake.lock generated
View file

@ -31,6 +31,29 @@
"type": "github"
}
},
"fenix": {
"inputs": {
"nixpkgs": [
"niri-tag",
"naersk",
"nixpkgs"
],
"rust-analyzer-src": "rust-analyzer-src"
},
"locked": {
"lastModified": 1752475459,
"narHash": "sha256-z6QEu4ZFuHiqdOPbYss4/Q8B0BFhacR8ts6jO/F/aOU=",
"owner": "nix-community",
"repo": "fenix",
"rev": "bf0d6f70f4c9a9cf8845f992105652173f4b617f",
"type": "github"
},
"original": {
"owner": "nix-community",
"repo": "fenix",
"type": "github"
}
},
"flake-compat": {
"flake": false,
"locked": {
@ -224,6 +247,25 @@
"type": "github"
}
},
"naersk": {
"inputs": {
"fenix": "fenix",
"nixpkgs": "nixpkgs_3"
},
"locked": {
"lastModified": 1752689277,
"narHash": "sha256-uldUBFkZe/E7qbvxa3mH1ItrWZyT6w1dBKJQF/3ZSsc=",
"owner": "nix-community",
"repo": "naersk",
"rev": "0e72363d0938b0208d6c646d10649164c43f4d64",
"type": "github"
},
"original": {
"owner": "nix-community",
"repo": "naersk",
"type": "github"
}
},
"nh": {
"inputs": {
"nixpkgs": [
@ -264,6 +306,99 @@
"type": "github"
}
},
"niri": {
"inputs": {
"niri-stable": "niri-stable",
"niri-unstable": "niri-unstable",
"nixpkgs": "nixpkgs_2",
"nixpkgs-stable": "nixpkgs-stable",
"xwayland-satellite-stable": "xwayland-satellite-stable",
"xwayland-satellite-unstable": "xwayland-satellite-unstable"
},
"locked": {
"lastModified": 1756801989,
"narHash": "sha256-eOIQ1CUMHwU4zsBGaCj9jCgNTxzyq2aeHuwgx0xLFwo=",
"owner": "sodiboo",
"repo": "niri-flake",
"rev": "d6a98b86d86b512c6167601ea646ab785137bada",
"type": "github"
},
"original": {
"owner": "sodiboo",
"repo": "niri-flake",
"type": "github"
}
},
"niri-stable": {
"flake": false,
"locked": {
"lastModified": 1756556321,
"narHash": "sha256-RLD89dfjN0RVO86C/Mot0T7aduCygPGaYbog566F0Qo=",
"owner": "YaLTeR",
"repo": "niri",
"rev": "01be0e65f4eb91a9cd624ac0b76aaeab765c7294",
"type": "github"
},
"original": {
"owner": "YaLTeR",
"ref": "v25.08",
"repo": "niri",
"type": "github"
}
},
"niri-tag": {
"inputs": {
"naersk": "naersk",
"niri": "niri_2",
"nixpkgs": "nixpkgs_4",
"systems": "systems_3"
},
"locked": {
"lastModified": 1755582059,
"narHash": "sha256-fDyhFfRazK2SvPQVGi6tcMTpOAu6CoUhZSyaaE2edtE=",
"ref": "refs/heads/main",
"rev": "0c1a104cea3de07c3416edb0d16db324daf5f61f",
"revCount": 37,
"type": "git",
"url": "https://git.atagen.co/atagen/niri-tag"
},
"original": {
"type": "git",
"url": "https://git.atagen.co/atagen/niri-tag"
}
},
"niri-unstable": {
"flake": false,
"locked": {
"lastModified": 1756728273,
"narHash": "sha256-7tYNlNO/qVRA6shdWxNuBMYOE+pGgxqE0f54S4Wr9PE=",
"owner": "YaLTeR",
"repo": "niri",
"rev": "77465e11fe36fdd9bc0a304b96bb2558116568af",
"type": "github"
},
"original": {
"owner": "YaLTeR",
"repo": "niri",
"type": "github"
}
},
"niri_2": {
"flake": false,
"locked": {
"lastModified": 1755539138,
"narHash": "sha256-8LoWAwBqHFOM1Je3b+XCs6gM5LbJlMfZtSpJvTe3sQk=",
"owner": "YaLTeR",
"repo": "niri",
"rev": "43a2648e579fc81366fc81b15f834c9c9dff119b",
"type": "github"
},
"original": {
"owner": "YaLTeR",
"repo": "niri",
"type": "github"
}
},
"nixpkgs": {
"locked": {
"lastModified": 1755972213,
@ -277,7 +412,71 @@
"url": "https://channels.nixos.org/nixos-unstable-small/nixexprs.tar.xz"
}
},
"nixpkgs-stable": {
"locked": {
"lastModified": 1756754095,
"narHash": "sha256-9Rsn9XEWINExosFkKEqdp8EI6Mujr1gmQiyrEcts2ls=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "7c815e513adbf03c9098b2bd230c1e0525c8a7f9",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixos-25.05",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs_2": {
"locked": {
"lastModified": 1756542300,
"narHash": "sha256-tlOn88coG5fzdyqz6R93SQL5Gpq+m/DsWpekNFhqPQk=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "d7600c775f877cd87b4f5a831c28aa94137377aa",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixos-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs_3": {
"locked": {
"lastModified": 1752077645,
"narHash": "sha256-HM791ZQtXV93xtCY+ZxG1REzhQenSQO020cu6rHtAPk=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "be9e214982e20b8310878ac2baa063a961c1bdf6",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixpkgs-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs_4": {
"locked": {
"lastModified": 1756696532,
"narHash": "sha256-6FWagzm0b7I/IGigOv9pr6LL7NQ86mextfE8g8Q6HBg=",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "58dcbf1ec551914c3756c267b8b9c8c86baa1b2f",
"type": "github"
},
"original": {
"owner": "nixos",
"ref": "nixpkgs-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs_5": {
"locked": {
"lastModified": 315532800,
"narHash": "sha256-JaSDu+RYnaHrkMCcW95rc8pG9QjD7nzX+/VHleiPVxA=",
@ -290,7 +489,7 @@
"url": "https://channels.nixos.org/nixpkgs-unstable/nixexprs.tar.xz"
}
},
"nixpkgs_3": {
"nixpkgs_6": {
"locked": {
"lastModified": 1754214453,
"narHash": "sha256-Q/I2xJn/j1wpkGhWkQnm20nShYnG7TI99foDBpXm1SY=",
@ -361,7 +560,9 @@
"lanzaboote": "lanzaboote",
"nh": "nh",
"nil": "nil",
"nixpkgs": "nixpkgs_2",
"niri": "niri",
"niri-tag": "niri-tag",
"nixpkgs": "nixpkgs_5",
"quickshell": "quickshell",
"sops-nix": "sops-nix",
"watt": "watt",
@ -369,6 +570,23 @@
"zen-browser-flake": "zen-browser-flake"
}
},
"rust-analyzer-src": {
"flake": false,
"locked": {
"lastModified": 1752428706,
"narHash": "sha256-EJcdxw3aXfP8Ex1Nm3s0awyH9egQvB2Gu+QEnJn2Sfg=",
"owner": "rust-lang",
"repo": "rust-analyzer",
"rev": "591e3b7624be97e4443ea7b5542c191311aa141d",
"type": "github"
},
"original": {
"owner": "rust-lang",
"ref": "nightly",
"repo": "rust-analyzer",
"type": "github"
}
},
"rust-overlay": {
"inputs": {
"nixpkgs": [
@ -485,6 +703,21 @@
"type": "github"
}
},
"systems_3": {
"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"
}
},
"watt": {
"inputs": {
"nixpkgs": [
@ -505,10 +738,43 @@
"type": "github"
}
},
"xwayland-satellite-stable": {
"flake": false,
"locked": {
"lastModified": 1755491097,
"narHash": "sha256-m+9tUfsmBeF2Gn4HWa6vSITZ4Gz1eA1F5Kh62B0N4oE=",
"owner": "Supreeeme",
"repo": "xwayland-satellite",
"rev": "388d291e82ffbc73be18169d39470f340707edaa",
"type": "github"
},
"original": {
"owner": "Supreeeme",
"ref": "v0.7",
"repo": "xwayland-satellite",
"type": "github"
}
},
"xwayland-satellite-unstable": {
"flake": false,
"locked": {
"lastModified": 1756679414,
"narHash": "sha256-yQGJ/n6mRwoIQnaL5oV2TGOHg4SEHpINTaoHrvkjr1Q=",
"owner": "Supreeeme",
"repo": "xwayland-satellite",
"rev": "c0497c990d46fcc012d9deff885bbe533e91e044",
"type": "github"
},
"original": {
"owner": "Supreeeme",
"repo": "xwayland-satellite",
"type": "github"
}
},
"zedless": {
"inputs": {
"flake-compat": "flake-compat_3",
"nixpkgs": "nixpkgs_3"
"nixpkgs": "nixpkgs_6"
},
"locked": {
"lastModified": 1754831523,

View file

@ -60,6 +60,13 @@
url = "git+https://git.lix.systems/lix-project/flake-compat.git";
flake = false;
};
niri.url = "github:sodiboo/niri-flake";
niri-tag = {
url = "git+https://git.atagen.co/atagen/niri-tag";
# inputs.nixpkgs.follows = "nixpkgs";
};
};
outputs = _: { };

View file

@ -33,7 +33,6 @@
impala
imv
inetutils
jujutsu
just
keepassxc
lazygit

View file

@ -29,7 +29,6 @@
imv
inetutils
inshellisense
jujutsu
just
keepassxc
lazygit

View file

@ -21,7 +21,6 @@
img2pdf
imv
inetutils
jujutsu
just
lazygit
libtool

View file

@ -207,7 +207,8 @@ let menus = [
only_buffer_difference: false
marker: $"(ansi yellow)╋ "
type: {
layout: ide
layout: columnar
columns: 3
min_completion_width: 0
max_completion_width: 150
max_completion_height: 25
@ -272,17 +273,44 @@ if not ($env_vars_file | path exists) {
| open $in
| str trim
| lines
| str replace --all '$HOME' $env.HOME
| str replace --all '$USER' $env.USER
| parse 'export {name}="{value}"'
| transpose --header-row --as-record
| tee { load-env $in }
| to nuon
| save --force $env_vars_file
} else {
| save --force $env_vars_file} else {
open $env_vars_file
| from nuon
| load-env $in
}
let converter = {
from_string: {|s| $s | split row (char esep) | path expand --no-symlink }
to_string: {|v| $v | path expand --no-symlink | str join (char esep) }
}
let addition = [
XDG_DATA_DIRS
XDG_CONFIG_DIRS
XCURSOR_PATH
TERMINFO_DIRS
QT_PLUGIN_PATH
QTWEBKIT_PLUGIN_PATH
QML2_IMPORT_PATH
INFOPATH
LIBEXEC_PATH
GTK_PATH
GIO_EXTRA_MODULES
CUPS_DATADIR
]
| each { {($in): $converter} }
| into record
$env.ENV_CONVERSIONS = $env.ENV_CONVERSIONS | merge $addition
$env.EDITOR = "hx"
def switch [] {
nh os switch --file ($env.NH_FLAKE | path join default.nix) (open /etc/hostname | str trim)
}

View file

@ -1,5 +1,6 @@
{
pkgs,
...
}:
{
@ -8,11 +9,8 @@
nushell
inshellisense
carapace
fish
];
environment.sessionVariables = {
CARAPACE_BRIDGES = "inshellisense,carapace,clap,bash";
CARAPACE_MATCH = 1;
};
files = {
".config/nushell/config.nu".source = ./config.nu;

View file

@ -1,6 +1,6 @@
{ pkgs, ... }:
let
key = pkgs.writeText "signingkey" "ecdsa-sha2-nistp521 AAAAE2VjZHNhLXNoYTItbmlzdHA1MjEAAAAIbmlzdHA1MjEAAACFBAAWEDj/Yib6Mqs016jx7rtecWpytwfVl28eoHtPYCM9TVLq81VIHJSN37lbkc/JjiXCdIJy2Ta3A3CVV5k3Z37NbgAu23oKA2OcHQNaRTLtqWlcBf9fk9suOkP1A3NzAqzivFpBnZm3ytaXwU8LBJqxOtNqZcFVruO6fZxJtg2uE34mAw==";
key = pkgs.writeText "signingkey" "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAILPiRe9OH/VtWFWyy5QbAVcN7CLxr4zUtRCwmxD6aeN6";
in
{
programs.git = {

View file

@ -60,7 +60,6 @@ in
inetutils
inetutils
jq
jujutsu
just
kondo
lazygit

View file

@ -6,75 +6,56 @@
}:
let
inherit (lib.meta) getExe;
inherit (builtins) attrValues readFile;
inherit (config.meta.mainUser) username;
realName = readFile config.sops.secrets.real_name.path;
universityEmail = readFile config.sops.secrets.university_email.path;
organizationEmail = readFile config.sops.secrets.organization_email.path;
organizationShortName = readFile config.sops.secrets.organization_short_name.path;
toml = pkgs.formats.toml { };
jj-config = toml.generate "config.toml" {
user = {
name = "Bloxx12";
email = "charlie@charlieroot.dev";
email = "fau@faukah.com";
name = "faukah";
};
ui = {
pager = [
"${getExe pkgs.bat}"
"--plain"
];
default-command = "log";
movement.edit = true;
diff.tool = [
"${getExe pkgs.difftastic}"
"--color"
"always"
"$left"
"$right"
];
"--scope" = [
{
"--when".repositories = [ "~/repos/projects/uni" ];
user = {
email = universityEmail;
name = realName;
};
# FIXME: do this with agenix
# "--scope" = [
# {
# "--when.repositories" = ["~/repos/projects/uni"];
# user = {
# # TODO
# name = "";
# email = "";
# };
# }
# {
# "--when.repositories" = ["~/repos/projects/uni/"];
# user = {
# # TODO
# name = "";
# email = "";
# };
# }
# ];
git.push-new-bookmarks = true;
}
{
signing = {
behaviour = "own";
backend = "ssh";
key = [
"ecdsa-sha2-nistp521 AAAAE2VjZHNhLXNoYTItbmlzdHA1MjEAAAAIbmlzdHA1MjEAAACFBAAWEDj/Yib6Mqs016jx7rtecWpytwfVl28eoHtPYCM9TVLq81VIHJSN37lbkc/JjiXCdIJy2Ta3A3CVV5k3Z37NbgAu23oKA2OcHQNaRTLtqWlcBf9fk9suOkP1A3NzAqzivFpBnZm3ytaXwU8LBJqxOtNqZcFVruO6fZxJtg2uE34mAw=="
];
"--when".repositories = [ "~/repos/projects/${organizationShortName}" ];
user = {
email = organizationEmail;
name = realName;
};
}
];
aliases = {
c = [ "commit" ];
ci = [
"commit"
"--interactive"
];
e = [ "edit" ];
# "new bookmark"
i = [
"git"
"init"
"--colocate"
];
nb = [
"bookmark"
"create"
"-r @-"
];
pull = [
"git"
"fetch"
@ -84,14 +65,12 @@ let
"push"
"--allow-new"
];
r = [ "rebase" ];
s = [ "squash" ];
si = [
"squash"
"--interactive"
];
tug = [
"bookmark"
"move"
@ -101,10 +80,17 @@ let
"@-"
];
};
revset-aliases = {
"closest_bookmark(to)" = "heads(::to & bookmarks())";
git.push-new-bookmarks = true;
revset-aliases."closest_bookmark(to)" = "heads(::to & bookmarks())";
signing = {
backend = "ssh";
behavior = "drop";
key = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAILPiRe9OH/VtWFWyy5QbAVcN7CLxr4zUtRCwmxD6aeN6";
};
template-aliases = {
"format_short_id(id)" = "id.shortest()";
"format_timestamp(timestamp)" = "timestamp.ago()";
};
templates = {
draft_commit_description = ''
concat(
@ -118,22 +104,27 @@ let
)
'';
};
template-aliases = {
"format_short_id(id)" = "id.shortest()";
ui = {
default-command = "log";
diff-formatter = [
"${getExe pkgs.difftastic}"
"--color"
"always"
"$left"
"$right"
];
movement = {
edit = true;
};
pager = [
"${getExe pkgs.bat}"
"--plain"
];
};
};
jj-wrapped = pkgs.symlinkJoin {
name = "jj-wrapped";
paths = [ pkgs.jj ];
nativeBuildInputs = [ pkgs.makeWrapper ];
postBuild = ''
wrapProgram $out/bin/mako --add-flags "\
--config ${jj-config}
'';
};
in
{
# environment.systemPackages = [jj-wrapped];
hjem.users.${username}.xdg.config.files."jj/config.toml".source = jj-config;
environment.systemPackages = attrValues { inherit (pkgs) jujutsu; };
}

View file

@ -12,7 +12,8 @@
loadInNixShell = true;
enableBashIntegration = false;
enableFishIntegration = false;
enableFishIntegration = true;
};
environment.systemPackages = [pkgs.fish];
};
}

View file

@ -39,6 +39,7 @@ in
boot = {
tmp.useTmpfs = true;
consoleLogLevel = 0;
enableContainers = false;
kernelParams = [
"quiet"

View file

@ -153,7 +153,7 @@ in
keep-derivations = true;
keep-outputs = true;
bash-prompt-suffix = "\[\033[m\]|\[\033[1;35m\]\t\[\033[m\]|\[\e[1m\]\u\[\e[1;36m\]\[\033[m\]@\[\e[1;36m\]\h\[\033[m\]:\[\e[0m\]\[\e[1;32m\][\W]> \[\e[0m\]";
# bash-prompt-suffix = "\[\033[m\]|\[\033[1;35m\]\t\[\033[m\]|\[\e[1m\]\u\[\e[1;36m\]\[\033[m\]@\[\e[1;36m\]\h\[\033[m\]:\[\e[0m\]\[\e[1;32m\][\W]> \[\e[0m\]";
# Use binary cache
builders-use-substitutes = true;

View file

@ -51,7 +51,7 @@ in
# Whether to expose old attribute names for compatibility.
# This improves backwards compatibility,
# which I could not care less about in my configuration.
allowAliases = false;
allowAliases = true;
# List of derivation warnings to display while rebuilding.
# See: <https://github.com/NixOS/nixpkgs/blob/master/pkgs/stdenv/generic/check-meta.nix>

View file

@ -5,6 +5,8 @@
plain,
leaf,
flag,
tagctl,
}:
let
inherit (lib.meta) getExe getExe';
@ -57,8 +59,11 @@ in
})
])
(flag "prefer-no-csd")
(leaf "screenshot-path" "~/Pictures/Screenshots/Screenshot from %Y-%m-%d %H-%M-%S.png")
(plain "layout" [
(leaf "gaps" 0)
(leaf "gaps" 15)
(leaf "center-focused-column" "on-overflow")
(plain "focus-ring" [
@ -115,7 +120,6 @@ in
(leaf "match" { namespace = "overview$"; })
(leaf "place-within-backdrop" true)
])
(flag "prefer-no-csd")
(plain "switch-events" [
(plain "lid-close" [
(leaf "spawn" <| getExe pkgs.swaylock)
@ -127,7 +131,7 @@ in
])
(plain "animations" [
(flag "off")
# (flag "off")
(plain "window-close" [
(leaf "duration-ms" 250)
(leaf "curve" "linear")
@ -149,7 +153,6 @@ in
(leaf "draw-border-with-background" false)
])
(plain "debug" [
(flag "wait-for-frame-completion-in-pipewire")
])
(plain "hotkey-overlay" [
(flag "skip-at-startup")
@ -228,17 +231,62 @@ in
])
])
(plain "Mod+0" [ (leaf "spawn" [tagctl "toggle-tag" "0"]) ])
(plain "Mod+1" [ (leaf "spawn" [tagctl "toggle-tag" "1"]) ])
(plain "Mod+2" [ (leaf "spawn" [tagctl "toggle-tag" "2"]) ])
(plain "Mod+3" [ (leaf "spawn" [tagctl "toggle-tag" "3"]) ])
(plain "Mod+4" [ (leaf "spawn" [tagctl "toggle-tag" "4"]) ])
(plain "Mod+5" [ (leaf "spawn" [tagctl "toggle-tag" "5"]) ])
(plain "Mod+6" [ (leaf "spawn" [tagctl "toggle-tag" "6"]) ])
(plain "Mod+7" [ (leaf "spawn" [tagctl "toggle-tag" "7"]) ])
(plain "Mod+8" [ (leaf "spawn" [tagctl "toggle-tag" "8"]) ])
(plain "Mod+9" [ (leaf "spawn" [tagctl "toggle-tag" "9"]) ])
# (plain "Mod+0" [ (leaf "focus-workspace" 0) ])
# (plain "Mod+1" [ (leaf "focus-workspace" 1) ])
# (plain "Mod+2" [ (leaf "focus-workspace" 2) ])
# (plain "Mod+3" [ (leaf "focus-workspace" 3) ])
# (plain "Mod+4" [ (leaf "focus-workspace" 4) ])
# (plain "Mod+5" [ (leaf "focus-workspace" 5) ])
# (plain "Mod+6" [ (leaf "focus-workspace" 6) ])
# (plain "Mod+7" [ (leaf "focus-workspace" 7) ])
# (plain "Mod+8" [ (leaf "focus-workspace" 8) ])
# (plain "Mod+9" [ (leaf "focus-workspace" 9) ])
#
(plain "Mod+Shift+0" [ (leaf "spawn" [tagctl "toggle" "0"]) ])
(plain "Mod+Shift+1" [ (leaf "spawn" [tagctl "toggle" "1"]) ])
(plain "Mod+Shift+2" [ (leaf "spawn" [tagctl "toggle" "2"]) ])
(plain "Mod+Shift+3" [ (leaf "spawn" [tagctl "toggle" "3"]) ])
(plain "Mod+Shift+4" [ (leaf "spawn" [tagctl "toggle" "4"]) ])
(plain "Mod+Shift+5" [ (leaf "spawn" [tagctl "toggle" "5"]) ])
(plain "Mod+Shift+6" [ (leaf "spawn" [tagctl "toggle" "6"]) ])
(plain "Mod+Shift+7" [ (leaf "spawn" [tagctl "toggle" "7"]) ])
(plain "Mod+Shift+8" [ (leaf "spawn" [tagctl "toggle" "8"]) ])
(plain "Mod+Shift+9" [ (leaf "spawn" [tagctl "toggle" "9"]) ])
# (plain "Mod+Shift+0" [ (leaf "move-column-to-workspace" 0) ])
# (plain "Mod+Shift+1" [ (leaf "move-column-to-workspace" 1) ])
# (plain "Mod+Shift+2" [ (leaf "move-column-to-workspace" 2) ])
# (plain "Mod+Shift+3" [ (leaf "move-column-to-workspace" 3) ])
# (plain "Mod+Shift+4" [ (leaf "move-column-to-workspace" 4) ])
# (plain "Mod+Shift+5" [ (leaf "move-column-to-workspace" 5) ])
# (plain "Mod+Shift+6" [ (leaf "move-column-to-workspace" 6) ])
# (plain "Mod+Shift+7" [ (leaf "move-column-to-workspace" 7) ])
# (plain "Mod+Shift+8" [ (leaf "move-column-to-workspace" 8) ])
# (plain "Mod+Shift+9" [ (leaf "move-column-to-workspace" 9) ])
(plain "Mod+Ctrl+0" [ (leaf "spawn" [tagctl "exclusive-tag" "0"]) ])
(plain "Mod+Ctrl+1" [ (leaf "spawn" [tagctl "exclusive-tag" "1"]) ])
(plain "Mod+Ctrl+2" [ (leaf "spawn" [tagctl "exclusive-tag" "2"]) ])
(plain "Mod+Ctrl+3" [ (leaf "spawn" [tagctl "exclusive-tag" "3"]) ])
(plain "Mod+Ctrl+4" [ (leaf "spawn" [tagctl "exclusive-tag" "4"]) ])
(plain "Mod+Ctrl+5" [ (leaf "spawn" [tagctl "exclusive-tag" "5"]) ])
(plain "Mod+Ctrl+6" [ (leaf "spawn" [tagctl "exclusive-tag" "6"]) ])
(plain "Mod+Ctrl+7" [ (leaf "spawn" [tagctl "exclusive-tag" "7"]) ])
(plain "Mod+Ctrl+8" [ (leaf "spawn" [tagctl "exclusive-tag" "8"]) ])
(plain "Mod+Ctrl+9" [ (leaf "spawn" [tagctl "exclusive-tag" "9"]) ])
(plain "Ctrl+Print" [ (flag "screenshot-screen") ])
(plain "Mod+0" [ (leaf "focus-workspace" 0) ])
(plain "Mod+1" [ (leaf "focus-workspace" 1) ])
(plain "Mod+2" [ (leaf "focus-workspace" 2) ])
(plain "Mod+3" [ (leaf "focus-workspace" 3) ])
(plain "Mod+4" [ (leaf "focus-workspace" 4) ])
(plain "Mod+5" [ (leaf "focus-workspace" 5) ])
(plain "Mod+6" [ (leaf "focus-workspace" 6) ])
(plain "Mod+7" [ (leaf "focus-workspace" 7) ])
(plain "Mod+8" [ (leaf "focus-workspace" 8) ])
(plain "Mod+9" [ (leaf "focus-workspace" 9) ])
(plain "Mod+Alt+L" [ (leaf "spawn" <| getExe pkgs.swaylock) ])
(plain "Mod+B" [ (leaf "spawn" <| getExe pkgs.brave) ])
(plain "Mod+BracketLeft" [ (flag "consume-or-expel-window-left") ])
@ -259,27 +307,17 @@ in
(plain "Mod+F" [ (flag "maximize-column") ])
(plain "Mod+H" [ (flag "focus-column-or-monitor-left") ])
(plain "Mod+Home" [ (flag "focus-column-first") ])
(plain "Mod+I" [ (flag "focus-workspace-up") ])
# (plain "Mod+I" [ (flag "focus-workspace-up") ])
(plain "Mod+J" [ (flag "focus-window-or-workspace-down") ])
(plain "Mod+K" [ (flag "focus-window-or-workspace-up") ])
(plain "Mod+L" [ (flag "focus-column-or-monitor-right") ])
(plain "Mod+Minus" [ (leaf "set-column-width" [ "-10%" ]) ])
(plain "Mod+O" [ (flag "toggle-overview") ])
(plain "Mod+Page_Down" [ (flag "focus-workspace-down") ])
(plain "Mod+Page_Up" [ (flag "focus-workspace-up") ])
# (plain "Mod+Page_Down" [ (flag "focus-workspace-down") ])
# (plain "Mod+Page_Up" [ (flag "focus-workspace-up") ])
(plain "Mod+Period" [ (flag "expel-window-from-column") ])
(plain "Mod+Q" [ (flag "close-window") ])
(plain "Mod+R" [ (flag "switch-preset-column-width") ])
(plain "Mod+Shift+0" [ (leaf "move-column-to-workspace" 0) ])
(plain "Mod+Shift+1" [ (leaf "move-column-to-workspace" 1) ])
(plain "Mod+Shift+2" [ (leaf "move-column-to-workspace" 2) ])
(plain "Mod+Shift+3" [ (leaf "move-column-to-workspace" 3) ])
(plain "Mod+Shift+4" [ (leaf "move-column-to-workspace" 4) ])
(plain "Mod+Shift+5" [ (leaf "move-column-to-workspace" 5) ])
(plain "Mod+Shift+6" [ (leaf "move-column-to-workspace" 6) ])
(plain "Mod+Shift+7" [ (leaf "move-column-to-workspace" 7) ])
(plain "Mod+Shift+8" [ (leaf "move-column-to-workspace" 8) ])
(plain "Mod+Shift+9" [ (leaf "move-column-to-workspace" 9) ])
(plain "Mod+Shift+Ctrl+Down" [ (flag "move-column-to-monitor-down") ])
(plain "Mod+Shift+Ctrl+H" [ (flag "move-column-to-monitor-left") ])
(plain "Mod+Shift+Ctrl+J" [ (flag "move-column-to-monitor-down") ])
@ -292,29 +330,29 @@ in
(plain "Mod+Shift+Equal" [ (leaf "set-window-height" [ "+10%" ]) ])
(plain "Mod+Shift+F" [ (flag "fullscreen-window") ])
(plain "Mod+Shift+H" [ (flag "move-column-left-or-to-monitor-left") ])
(plain "Mod+Shift+I" [ (flag "move-column-to-workspace-up") ])
(plain "Mod+Shift+J" [ (flag "move-window-down-or-to-workspace-down") ])
(plain "Mod+Shift+K" [ (flag "move-window-up-or-to-workspace-up") ])
# (plain "Mod+Shift+I" [ (flag "move-column-to-workspace-up") ])
# (plain "Mod+Shift+J" [ (flag "move-window-down-or-to-workspace-down") ])
# (plain "Mod+Shift+K" [ (flag "move-window-up-or-to-workspace-up") ])
(plain "Mod+Shift+L" [ (flag "move-column-right-or-to-monitor-right") ])
(plain "Mod+Shift+Minus" [ (leaf "set-window-height" [ "-10%" ]) ])
(plain "Mod+Shift+Page_Down" [ (flag "move-column-to-workspace-down") ])
# (plain "Mod+Shift+Page_Down" [ (flag "move-column-to-workspace-down") ])
(plain "Mod+Shift+Page_Up" [ (flag "move-column-to-workspace-up") ])
(plain "Mod+Shift+P" [ (flag "power-off-monitors") ])
(plain "Mod+Shift+R" [ (flag "switch-preset-window-height") ])
(plain "Mod+Shift+U" [ (flag "move-column-to-workspace-down") ])
# (plain "Mod+Shift+U" [ (flag "move-column-to-workspace-down") ])
(plain "Mod+Shift+V" [ (flag "switch-focus-between-floating-and-tiling") ])
(plain "Mod+Shift+WheelScrollDown" [ (flag "move-column-to-workspace-down") ])
# (plain "Mod+Shift+WheelScrollDown" [ (flag "move-column-to-workspace-down") ])
(plain "Mod+Shift+WheelScrollLeft" [ (flag "move-column-left") ])
(plain "Mod+Shift+WheelScrollRight" [ (flag "move-column-right") ])
(plain "Mod+Shift+WheelScrollUp" [ (flag "move-column-to-workspace-up") ])
# (plain "Mod+Shift+WheelScrollUp" [ (flag "move-column-to-workspace-up") ])
(plain "Mod+T" [ (flag "screenshot") ])
(plain "Mod+U" [ (flag "focus-workspace-down") ])
(plain "Mod+V" [ (flag "toggle-window-floating") ])
(plain "Mod+W" [ (flag "toggle-column-tabbed-display") ])
(plain "Mod+WheelScrollDown" [ (flag "focus-workspace-down") ])
# (plain "Mod+WheelScrollDown" [ (flag "focus-workspace-down") ])
(plain "Mod+WheelScrollLeft" [ (flag "focus-column-left") ])
(plain "Mod+WheelScrollRight" [ (flag "focus-column-right") ])
(plain "Mod+WheelScrollUp" [ (flag "focus-workspace-up") ])
# (plain "Mod+WheelScrollUp" [ (flag "focus-workspace-up") ])
(plain "Print" [ (flag "screenshot") ])
])

View file

@ -1,5 +1,6 @@
{
config,
inputs,
lib,
pkgs,
...
@ -7,8 +8,13 @@
let
inherit (lib.modules) mkForce mkIf;
inherit (lib.options) mkEnableOption;
inherit (lib.meta) getExe';
inherit (config.modules.system) isGraphical;
inherit (config.meta.mainUser) username;
inherit (lib) getFlakePkg';
niri-tag = inputs.niri-tag.packages.${builtins.currentSystem}.unstable;
tagctl = getExe' niri-tag "tagctl";
cfg = config.modules.desktops.niri;
@ -50,21 +56,31 @@ let
flag
lib
pkgs
tagctl
;
}
);
in
{
imports = [
inputs.niri-tag.nixosModules.niri-tag
inputs.niri.nixosModules.niri
];
options.modules.desktops.niri.enable = mkEnableOption "Niri, a scolling tiling wayland compositor";
config = mkIf (cfg.enable || isGraphical) {
programs.niri = {
enable = true;
package = pkgs.niri;
# package = pkgs.niri;
};
services = {
# The niri module auto enables the gnome keyring,
# which is something I direly want to avoid.
services.gnome.gnome-keyring.enable = mkForce false;
gnome.gnome-keyring.enable = mkForce false;
niri-tag = {
enable = true;
};
};
hjem.users.${username}.files.".config/niri/config.kdl".source = niri-config;

View file

@ -11,30 +11,33 @@ in
{
xdg.portal = {
enable = true;
# Sets environment variable NIXOS_XDG_OPEN_USE_PORTAL to 1.
# This will make xdg-open use the portal to open programs,
# which resolves bugs involving programs opening inside FHS envs
# or with unexpected env vars set from wrappers.
# See #160923 for more info.
xdgOpenUsePortal = true;
extraPortals = [
pkgs.xdg-desktop-portal-gtk
pkgs.kdePackages.xdg-desktop-portal-kde
pkgs.xdg-desktop-portal-gnome
pkgs.xdg-desktop-portal-gtk
];
config = {
niri = {
common = {
default = [
"gnome"
"gtk"
"kde"
];
# Portal API reference:
# https://docs.flatpak.org/en/latest/portal-api-reference.html
# "org.freedesktop.impl.portal.Access" = ["kde"];
# "org.freedesktop.impl.portal.Notification" = ["kde"];
"org.freedesktop.impl.portal.FileChooser" = [ "kde" ];
"org.freedesktop.impl.portal.Secret" = [
"gnome-keyring"
];
};
};
};
environment.pathsToLink = [
"/share/xdg-desktop-portal"
"/share/applications"
];
}