before refactor the arch of configuration.

This commit is contained in:
Ulic-youthlic 2025-01-06 21:35:28 +08:00
parent 19ef41633b
commit 6be554822c
12 changed files with 884 additions and 92 deletions

View file

@ -12,6 +12,7 @@
{ {
# Bootloader. # Bootloader.
boot.kernelPackages = pkgs.linuxPackages_zen;
boot.loader.systemd-boot.enable = true; boot.loader.systemd-boot.enable = true;
boot.loader.efi.canTouchEfiVariables = true; boot.loader.efi.canTouchEfiVariables = true;
@ -33,6 +34,19 @@
networkmanager.enable = false; networkmanager.enable = false;
useNetworkd = true; useNetworkd = true;
useDHCP = false; useDHCP = false;
wireless.iwd = {
enable = true;
settings = {
General = {
EnableNetworkConfiguration = true;
};
Network = {
EnableIPv6 = true;
NameResolvingService = "systemd";
};
};
};
}; };
systemd.network = { systemd.network = {
enable = true; enable = true;
@ -87,13 +101,17 @@
# Enable the X11 windowing system. # Enable the X11 windowing system.
# You can disable this if you're only using the Wayland session. # You can disable this if you're only using the Wayland session.
services.xserver.enable = true; services.xserver = {
display = 0;
enable = true;
};
# Enable the KDE Plasma Desktop Environment. # Enable the KDE Plasma Desktop Environment.
# services.displayManager.sddm.enable = true; # services.displayManager.sddm.enable = true;
# services.desktopManager.plasma6.enable = true; # services.desktopManager.plasma6.enable = true;
services.desktopManager.cosmic.enable = true; services.desktopManager.cosmic.enable = true;
services.displayManager.cosmic-greeter.enable = true; services.displayManager.cosmic-greeter.enable = true;
programs.niri.enable = true;
# Configure keymap in X11 # Configure keymap in X11
services.xserver.xkb = { services.xserver.xkb = {
@ -142,7 +160,7 @@
programs.localsend.enable = true; programs.localsend.enable = true;
# Enable sound with pipewire. # Enable sound with pipewire.
hardware.pulseaudio.enable = false; services.pulseaudio.enable = false;
security.rtkit.enable = true; security.rtkit.enable = true;
services.pipewire = { services.pipewire = {
enable = true; enable = true;
@ -179,6 +197,7 @@
# List packages installed in system profile. To search, run: # List packages installed in system profile. To search, run:
environment.systemPackages = with pkgs; [ environment.systemPackages = with pkgs; [
nix-output-monitor
wget wget
git git
vim vim
@ -219,4 +238,5 @@
]; ];
system.stateVersion = "24.11"; # Did you read the comment? system.stateVersion = "24.11"; # Did you read the comment?
} }

416
flake.lock generated
View file

@ -15,6 +15,25 @@
"type": "github" "type": "github"
} }
}, },
"dae": {
"inputs": {
"flake-parts": "flake-parts",
"nixpkgs": "nixpkgs"
},
"locked": {
"lastModified": 1735839355,
"narHash": "sha256-lpCluUgqSIZYgVlc9nxm9+dBN5UWjTXodgGjyHL86HM=",
"owner": "daeuniverse",
"repo": "flake.nix",
"rev": "84e086608ebc04973387fd57b548139476358638",
"type": "github"
},
"original": {
"owner": "daeuniverse",
"repo": "flake.nix",
"type": "github"
}
},
"flake-compat": { "flake-compat": {
"flake": false, "flake": false,
"locked": { "locked": {
@ -62,6 +81,24 @@
} }
}, },
"flake-parts": { "flake-parts": {
"inputs": {
"nixpkgs-lib": "nixpkgs-lib"
},
"locked": {
"lastModified": 1730504689,
"narHash": "sha256-hgmguH29K2fvs9szpq2r3pz2/8cJd2LPS+b4tfNFCwE=",
"owner": "hercules-ci",
"repo": "flake-parts",
"rev": "506278e768c2a08bec68eb62932193e341f55c90",
"type": "github"
},
"original": {
"owner": "hercules-ci",
"repo": "flake-parts",
"type": "github"
}
},
"flake-parts_2": {
"inputs": { "inputs": {
"nixpkgs-lib": [ "nixpkgs-lib": [
"nur", "nur",
@ -82,9 +119,27 @@
"type": "github" "type": "github"
} }
}, },
"flake-parts_2": { "flake-parts_3": {
"inputs": { "inputs": {
"nixpkgs-lib": "nixpkgs-lib" "nixpkgs-lib": "nixpkgs-lib_2"
},
"locked": {
"lastModified": 1733312601,
"narHash": "sha256-4pDvzqnegAfRkPwO3wmwBhVi/Sye1mzps0zHWYnP88c=",
"owner": "hercules-ci",
"repo": "flake-parts",
"rev": "205b12d8b7cd4802fbcb8e8ef6a0f1408781a4f9",
"type": "github"
},
"original": {
"owner": "hercules-ci",
"repo": "flake-parts",
"type": "github"
}
},
"flake-parts_4": {
"inputs": {
"nixpkgs-lib": "nixpkgs-lib_3"
}, },
"locked": { "locked": {
"lastModified": 1727826117, "lastModified": 1727826117,
@ -159,11 +214,11 @@
"systems": "systems_5" "systems": "systems_5"
}, },
"locked": { "locked": {
"lastModified": 1726560853, "lastModified": 1731533236,
"narHash": "sha256-X6rJYSESBVr3hBoH0WbKE5KvhPU5bloyZ2L4K60/fPQ=", "narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=",
"owner": "numtide", "owner": "numtide",
"repo": "flake-utils", "repo": "flake-utils",
"rev": "c1dfcf08411b08f6b8615f7d8971a2bfa81d5e8a", "rev": "11707dc2f618dd54ca8739b309ec4fc024de578b",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -175,17 +230,17 @@
"freetype2": { "freetype2": {
"flake": false, "flake": false,
"locked": { "locked": {
"lastModified": 1687587065, "lastModified": 1723459814,
"narHash": "sha256-+Fh+/k+NWL5Ow9sDLtp8Cv/8rLNA1oByQQCIQS/bysY=", "narHash": "sha256-4l90lDtpgm5xlh2m7ifrqNy373DTRTULRkAzicrM93c=",
"owner": "wez", "owner": "freetype",
"repo": "freetype2", "repo": "freetype",
"rev": "e4586d960f339cf75e2e0b34aee30a0ed8353c0d", "rev": "42608f77f20749dd6ddc9e0536788eaad70ea4b5",
"type": "github" "type": "github"
}, },
"original": { "original": {
"owner": "wez", "owner": "freetype",
"repo": "freetype2", "ref": "VER-2-13-3",
"rev": "e4586d960f339cf75e2e0b34aee30a0ed8353c0d", "repo": "freetype",
"type": "github" "type": "github"
} }
}, },
@ -197,11 +252,11 @@
"zig": "zig" "zig": "zig"
}, },
"locked": { "locked": {
"lastModified": 1735362327, "lastModified": 1736131979,
"narHash": "sha256-kD49xAUMCWU60IRKoJiyJTaEUum7rk45OYjZfwWr3Ck=", "narHash": "sha256-NPfIRTbmzP5+IbbDIYED3zxVd+b1DSsl8nCGRBt3iQo=",
"owner": "ghostty-org", "owner": "ghostty-org",
"repo": "ghostty", "repo": "ghostty",
"rev": "6cbd69da7839260508466f9dfb2bc0c0fbb43991", "rev": "6181487bad55f8bbff9ce4f849a40fac72120f82",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -213,16 +268,16 @@
"harfbuzz": { "harfbuzz": {
"flake": false, "flake": false,
"locked": { "locked": {
"lastModified": 1711722720, "lastModified": 1719502711,
"narHash": "sha256-GdxcAPx5QyniSHPAN1ih28AD9JLUPR0ItqW9JEsl3pU=", "narHash": "sha256-2ieCf3ftNk851FZBDPVl+7QHWBqD729KiUxUyxi26Yg=",
"owner": "harfbuzz", "owner": "harfbuzz",
"repo": "harfbuzz", "repo": "harfbuzz",
"rev": "63973005bc07aba599b47fdd4cf788647b601ccd", "rev": "9c03576c49db6e7207d9bcdfe3abd170a809157f",
"type": "github" "type": "github"
}, },
"original": { "original": {
"owner": "harfbuzz", "owner": "harfbuzz",
"ref": "8.4.0", "ref": "9.0.0",
"repo": "harfbuzz", "repo": "harfbuzz",
"type": "github" "type": "github"
} }
@ -237,11 +292,11 @@
"rust-overlay": "rust-overlay" "rust-overlay": "rust-overlay"
}, },
"locked": { "locked": {
"lastModified": 1735311473, "lastModified": 1736116509,
"narHash": "sha256-PIAQe6E07XFYYwv0ARV9oqgV/d30etcMKEEBzyyI1NU=", "narHash": "sha256-ZcUDcqSSLmSLgNVFZ9r3wQ2Dp7MK94kZ1gSOABJ2+Wo=",
"owner": "helix-editor", "owner": "helix-editor",
"repo": "helix", "repo": "helix",
"rev": "a5a7cff311e909ecab41f840742a5309634aeec3", "rev": "6c9619d0944570727ce1f9e8212c4081456fc361",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -258,11 +313,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1735343815, "lastModified": 1736089250,
"narHash": "sha256-p7IJP/97zJda/wwCn1T2LJBz4olF5LjNf4uwhuyvARo=", "narHash": "sha256-/LPWMiiJGPHGd7ZYEgmbE2da4zvBW0acmshUjYC3WG4=",
"owner": "nix-community", "owner": "nix-community",
"repo": "home-manager", "repo": "home-manager",
"rev": "b7a7cd5dd1a74a9fe86ed4e016f91c78483b527a", "rev": "172b91bfb2b7f5c4a8c6ceac29fd53a01ef07196",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -296,17 +351,73 @@
"libpng": { "libpng": {
"flake": false, "flake": false,
"locked": { "locked": {
"lastModified": 1549245649, "lastModified": 1726173884,
"narHash": "sha256-1+cRp0Ungme/OGfc9kGJbklYIWAFxk8Il1M+NV4KSgw=", "narHash": "sha256-gBfHgGaqVYdmhWXoNKZzPyGzyw2rr3zp+DjWmfC41jk=",
"owner": "glennrp", "owner": "pnggroup",
"repo": "libpng", "repo": "libpng",
"rev": "8439534daa1d3a5705ba92e653eda9251246dd61", "rev": "f5e92d76973a7a53f517579bc95d61483bf108c0",
"type": "github" "type": "github"
}, },
"original": { "original": {
"owner": "glennrp", "owner": "pnggroup",
"ref": "v1.6.44",
"repo": "libpng", "repo": "libpng",
"rev": "8439534daa1d3a5705ba92e653eda9251246dd61", "type": "github"
}
},
"niri-flake": {
"inputs": {
"niri-stable": "niri-stable",
"niri-unstable": "niri-unstable",
"nixpkgs": "nixpkgs_2",
"nixpkgs-stable": "nixpkgs-stable_2",
"xwayland-satellite-stable": "xwayland-satellite-stable",
"xwayland-satellite-unstable": "xwayland-satellite-unstable"
},
"locked": {
"lastModified": 1736149834,
"narHash": "sha256-newGrF/Y2a457+jjWEwg+oVGeFnSt1UY6zkF/hlSMCY=",
"owner": "sodiboo",
"repo": "niri-flake",
"rev": "2ac88ed580655c5cf089b279c7b6227328bb4a95",
"type": "github"
},
"original": {
"owner": "sodiboo",
"repo": "niri-flake",
"type": "github"
}
},
"niri-stable": {
"flake": false,
"locked": {
"lastModified": 1731483594,
"narHash": "sha256-Qjf7alRbPPERfiZsM9EMKX+HwjESky1tieh5PJIkLwE=",
"owner": "YaLTeR",
"repo": "niri",
"rev": "75c79116a7e40cbc0e110ce0cdd500e896458679",
"type": "github"
},
"original": {
"owner": "YaLTeR",
"ref": "v0.1.10.1",
"repo": "niri",
"type": "github"
}
},
"niri-unstable": {
"flake": false,
"locked": {
"lastModified": 1736073506,
"narHash": "sha256-c8UMa0Yb8hYm9D3Q/k+GsRxsk8oTYy2OJywCHjWXrlU=",
"owner": "YaLTeR",
"repo": "niri",
"rev": "89678c7b1e6ebe6ec5411db5a2b99bd6bea63565",
"type": "github"
},
"original": {
"owner": "YaLTeR",
"repo": "niri",
"type": "github" "type": "github"
} }
}, },
@ -319,7 +430,7 @@
"nix-github-actions": "nix-github-actions", "nix-github-actions": "nix-github-actions",
"nixpkgs": [ "nixpkgs": [
"oskars-dotfiles", "oskars-dotfiles",
"nixpkgs-unstable" "nixpkgs"
], ],
"nixpkgs-wine": "nixpkgs-wine", "nixpkgs-wine": "nixpkgs-wine",
"systems": "systems_3", "systems": "systems_3",
@ -339,12 +450,33 @@
"type": "github" "type": "github"
} }
}, },
"nix-gaming": { "nix-darwin": {
"inputs": { "inputs": {
"flake-parts": "flake-parts_2",
"nixpkgs": [ "nixpkgs": [
"oskars-dotfiles", "oskars-dotfiles",
"nixpkgs-unstable" "nixpkgs"
]
},
"locked": {
"lastModified": 1735218083,
"narHash": "sha256-MoUAbmXz9TEr7zlKDRO56DBJHe30+7B5X7nhXm+Vpc8=",
"owner": "LnL7",
"repo": "nix-darwin",
"rev": "bc03f7818771a75716966ce8c23110b715eff2aa",
"type": "github"
},
"original": {
"owner": "LnL7",
"repo": "nix-darwin",
"type": "github"
}
},
"nix-gaming": {
"inputs": {
"flake-parts": "flake-parts_4",
"nixpkgs": [
"oskars-dotfiles",
"nixpkgs"
], ],
"umu": "umu" "umu": "umu"
}, },
@ -388,16 +520,16 @@
"nixos-cosmic": { "nixos-cosmic": {
"inputs": { "inputs": {
"flake-compat": "flake-compat_2", "flake-compat": "flake-compat_2",
"nixpkgs": "nixpkgs", "nixpkgs": "nixpkgs_3",
"nixpkgs-stable": "nixpkgs-stable_2", "nixpkgs-stable": "nixpkgs-stable_3",
"rust-overlay": "rust-overlay_2" "rust-overlay": "rust-overlay_2"
}, },
"locked": { "locked": {
"lastModified": 1735362320, "lastModified": 1736127757,
"narHash": "sha256-nNPTwaTLwMFX4Y0ugxwubIw2LJ+qt2g2FrwBVjRr1zI=", "narHash": "sha256-VYQqg7vaRoao+A5XUrflxcDBe1kXQUGSQId4M7fz8nw=",
"owner": "lilyinstarlight", "owner": "lilyinstarlight",
"repo": "nixos-cosmic", "repo": "nixos-cosmic",
"rev": "7da43ac24467b538ae5f07117709665b189887fd", "rev": "5e273a14a62532d518e1ea5d7bc3f9a2c001ea95",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -408,11 +540,11 @@
}, },
"nixos-hardware": { "nixos-hardware": {
"locked": { "locked": {
"lastModified": 1734954597, "lastModified": 1735388221,
"narHash": "sha256-QIhd8/0x30gEv8XEE1iAnrdMlKuQ0EzthfDR7Hwl+fk=", "narHash": "sha256-e5IOgjQf0SZcFCEV/gMGrsI0gCJyqOKShBQU0iiM3Kg=",
"owner": "NixOS", "owner": "NixOS",
"repo": "nixos-hardware", "repo": "nixos-hardware",
"rev": "def1d472c832d77885f174089b0d34854b007198", "rev": "7c674c6734f61157e321db595dbfcd8523e04e19",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -424,11 +556,11 @@
}, },
"nixpkgs": { "nixpkgs": {
"locked": { "locked": {
"lastModified": 1735291276, "lastModified": 1730531603,
"narHash": "sha256-NYVcA06+blsLG6wpAbSPTCyLvxD/92Hy4vlY9WxFI1M=", "narHash": "sha256-Dqg6si5CqIzm87sp57j5nTaeBbWhHFaVyG7V6L8k3lY=",
"owner": "NixOS", "owner": "NixOS",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "634fd46801442d760e09493a794c4f15db2d0cbb", "rev": "7ffd9ae656aec493492b44d0ddfb28e79a1ea25d",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -438,7 +570,47 @@
"type": "github" "type": "github"
} }
}, },
"nixpkgs-darwin": {
"locked": {
"lastModified": 1735171749,
"narHash": "sha256-UA56kDQSztRWbpsG9bK+jIGyZ0YZAcIsYAhXDHIr8zs=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "03b02bb3356e29e9d4d1200f9b1f5f36bf3780f0",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixpkgs-24.11-darwin",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs-lib": { "nixpkgs-lib": {
"locked": {
"lastModified": 1730504152,
"narHash": "sha256-lXvH/vOfb4aGYyvFmZK/HlsNsr/0CVWlwYvo2rxJk3s=",
"type": "tarball",
"url": "https://github.com/NixOS/nixpkgs/archive/cc2f28000298e1269cea6612cd06ec9979dd5d7f.tar.gz"
},
"original": {
"type": "tarball",
"url": "https://github.com/NixOS/nixpkgs/archive/cc2f28000298e1269cea6612cd06ec9979dd5d7f.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-lib_3": {
"locked": { "locked": {
"lastModified": 1727825735, "lastModified": 1727825735,
"narHash": "sha256-0xHYkMkeLVQAMa7gvkddbPqpxph+hDzdu1XdGPJR+Os=", "narHash": "sha256-0xHYkMkeLVQAMa7gvkddbPqpxph+hDzdu1XdGPJR+Os=",
@ -468,11 +640,27 @@
}, },
"nixpkgs-stable_2": { "nixpkgs-stable_2": {
"locked": { "locked": {
"lastModified": 1735141468, "lastModified": 1736061677,
"narHash": "sha256-VIAjBr1qGcEbmhLwQJD6TABppPMggzOvqFsqkDoMsAY=", "narHash": "sha256-DjkQPnkAfd7eB522PwnkGhOMuT9QVCZspDpJJYyOj60=",
"owner": "NixOS", "owner": "NixOS",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "4005c3ff7505313cbc21081776ad0ce5dfd7a3ce", "rev": "cbd8ec4de4469333c82ff40d057350c30e9f7d36",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixos-24.11",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs-stable_3": {
"locked": {
"lastModified": 1736061677,
"narHash": "sha256-DjkQPnkAfd7eB522PwnkGhOMuT9QVCZspDpJJYyOj60=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "cbd8ec4de4469333c82ff40d057350c30e9f7d36",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -532,11 +720,43 @@
}, },
"nixpkgs_2": { "nixpkgs_2": {
"locked": { "locked": {
"lastModified": 1735291276, "lastModified": 1736012469,
"narHash": "sha256-NYVcA06+blsLG6wpAbSPTCyLvxD/92Hy4vlY9WxFI1M=", "narHash": "sha256-/qlNWm/IEVVH7GfgAIyP6EsVZI6zjAx1cV5zNyrs+rI=",
"owner": "NixOS", "owner": "NixOS",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "634fd46801442d760e09493a794c4f15db2d0cbb", "rev": "8f3e1f807051e32d8c95cd12b9b421623850a34d",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixos-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs_3": {
"locked": {
"lastModified": 1735834308,
"narHash": "sha256-dklw3AXr3OGO4/XT1Tu3Xz9n/we8GctZZ75ZWVqAVhk=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "6df24922a1400241dae323af55f30e4318a6ca65",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixos-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs_4": {
"locked": {
"lastModified": 1736012469,
"narHash": "sha256-/qlNWm/IEVVH7GfgAIyP6EsVZI6zjAx1cV5zNyrs+rI=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "8f3e1f807051e32d8c95cd12b9b421623850a34d",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -548,18 +768,18 @@
}, },
"nur": { "nur": {
"inputs": { "inputs": {
"flake-parts": "flake-parts", "flake-parts": "flake-parts_2",
"nixpkgs": [ "nixpkgs": [
"nixpkgs" "nixpkgs"
], ],
"treefmt-nix": "treefmt-nix" "treefmt-nix": "treefmt-nix"
}, },
"locked": { "locked": {
"lastModified": 1735367808, "lastModified": 1736163949,
"narHash": "sha256-OdwpdXcrLpZfxQVECzzDzYDnxWl8M0iyryX2Hyg0J7A=", "narHash": "sha256-ewYhjZY7zHQ9Jv1ePIShLGM5odwyX06OWzDNHxEpcs8=",
"owner": "nix-community", "owner": "nix-community",
"repo": "NUR", "repo": "NUR",
"rev": "db1a42be19ec69ba2e7f92f62dfc102ef1d2a91c", "rev": "879889538510c1974242e90c17fe1d1ad156f822",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -585,24 +805,26 @@
}, },
"oskars-dotfiles": { "oskars-dotfiles": {
"inputs": { "inputs": {
"flake-parts": "flake-parts_3",
"home-manager": "home-manager_2", "home-manager": "home-manager_2",
"nix-citizen": "nix-citizen", "nix-citizen": "nix-citizen",
"nix-darwin": "nix-darwin",
"nix-gaming": "nix-gaming", "nix-gaming": "nix-gaming",
"nixpkgs": [ "nixpkgs": [
"nixpkgs" "nixpkgs"
], ],
"nixpkgs-darwin": "nixpkgs-darwin",
"nixpkgs-unstable": "nixpkgs-unstable_2", "nixpkgs-unstable": "nixpkgs-unstable_2",
"nur": "nur_2", "nur": "nur_2",
"rust-overlay": "rust-overlay_3", "rust-overlay": "rust-overlay_3",
"winapps": "winapps", "winapps": "winapps"
"zen-browser": "zen-browser"
}, },
"locked": { "locked": {
"lastModified": 1733907511, "lastModified": 1735384567,
"narHash": "sha256-9ERM2ihW8Z3Jb9ZsPqSxI7GCTeJcW5jDl/Q39FZcGIo=", "narHash": "sha256-8+cAKak4QNBsvg+qUEROeH+xvBNfjHtBBI/gI/zRP7Q=",
"owner": "oskardotglobal", "owner": "oskardotglobal",
"repo": ".dotfiles", "repo": ".dotfiles",
"rev": "77a46fb1a4b42ef9b7d35c6fa6b5be5d6545c066", "rev": "88510c4f7bb9d8939f17d4f1e33d6a7a47d7ba2b",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -614,12 +836,14 @@
}, },
"root": { "root": {
"inputs": { "inputs": {
"dae": "dae",
"ghostty": "ghostty", "ghostty": "ghostty",
"helix": "helix", "helix": "helix",
"home-manager": "home-manager", "home-manager": "home-manager",
"niri-flake": "niri-flake",
"nixos-cosmic": "nixos-cosmic", "nixos-cosmic": "nixos-cosmic",
"nixos-hardware": "nixos-hardware", "nixos-hardware": "nixos-hardware",
"nixpkgs": "nixpkgs_2", "nixpkgs": "nixpkgs_4",
"nur": "nur", "nur": "nur",
"oskars-dotfiles": "oskars-dotfiles", "oskars-dotfiles": "oskars-dotfiles",
"wezterm": "wezterm" "wezterm": "wezterm"
@ -654,11 +878,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1735266518, "lastModified": 1736044260,
"narHash": "sha256-2XkWYGgT+911gOLjgBj+8W8ZJk6P0qHJNz8RfKgT/5o=", "narHash": "sha256-DTAr0mAd8AZwWgRtU9ZZFPz3DwNeoH/Oi/1QMSqc9YQ=",
"owner": "oxalica", "owner": "oxalica",
"repo": "rust-overlay", "repo": "rust-overlay",
"rev": "e0b3654b716098b47f3643c65fbb75ef49c033e1", "rev": "c8ed24cc104ebbc218d992e208131e9f024b69f0",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -696,11 +920,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1729477859, "lastModified": 1735871325,
"narHash": "sha256-r0VyeJxy4O4CgTB/PNtfQft9fPfN1VuGvnZiCxDArvg=", "narHash": "sha256-6Ta5E4mhSfCP6LdkzkG2+BciLOCPeLKuYTJ6lOHW+mI=",
"owner": "oxalica", "owner": "oxalica",
"repo": "rust-overlay", "repo": "rust-overlay",
"rev": "ada8266712449c4c0e6ee6fcbc442b3c217c79e1", "rev": "a599f011db521766cbaf7c2f5874182485554f00",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -867,11 +1091,11 @@
}, },
"locked": { "locked": {
"dir": "nix", "dir": "nix",
"lastModified": 1733412933, "lastModified": 1735931735,
"narHash": "sha256-2OPDEgUEh0B6OIcSWtBbkw/zFi8r2VfluLj7FebTaVA=", "narHash": "sha256-4wzEN5IPYmqLP8TAdFatoRhCZ7W9y65AWoYN0Qgvbg8=",
"owner": "wez", "owner": "wez",
"repo": "wezterm", "repo": "wezterm",
"rev": "6f375e29a2c4d70b8b51956edd494693196c6692", "rev": "8e9cf912e66f704f300fac6107206a75036de1e7",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -905,24 +1129,36 @@
"type": "github" "type": "github"
} }
}, },
"zen-browser": { "xwayland-satellite-stable": {
"inputs": { "flake": false,
"nixpkgs": [
"oskars-dotfiles",
"nixpkgs"
]
},
"locked": { "locked": {
"lastModified": 1731689537, "lastModified": 1730166465,
"narHash": "sha256-0wN39XFD5bVcNANh9uLoQYyKbp9r6xX+oON1qI+L9iI=", "narHash": "sha256-nq7bouXQXaaPPo/E+Jbq+wNHnatD4dY8OxSrRqzvy6s=",
"owner": "ch4og", "owner": "Supreeeme",
"repo": "zen-browser-flake", "repo": "xwayland-satellite",
"rev": "064be844324965da1d596a541fdd831efe4a3a32", "rev": "a713cf46cb7db84a0d1b57c3a397c610cad3cf98",
"type": "github" "type": "github"
}, },
"original": { "original": {
"owner": "ch4og", "owner": "Supreeeme",
"repo": "zen-browser-flake", "ref": "v0.5",
"repo": "xwayland-satellite",
"type": "github"
}
},
"xwayland-satellite-unstable": {
"flake": false,
"locked": {
"lastModified": 1734745564,
"narHash": "sha256-JQNl4pqonVVPQ2JzEOLUcPVRNj//FFFNRDyvQoOkG7s=",
"owner": "Supreeeme",
"repo": "xwayland-satellite",
"rev": "94da1af75326d89ecb12aba0cc9362e93ffdc766",
"type": "github"
},
"original": {
"owner": "Supreeeme",
"repo": "xwayland-satellite",
"type": "github" "type": "github"
} }
}, },
@ -954,16 +1190,16 @@
"zlib": { "zlib": {
"flake": false, "flake": false,
"locked": { "locked": {
"lastModified": 1484501380, "lastModified": 1705948357,
"narHash": "sha256-j5b6aki1ztrzfCqu8y729sPar8GpyQWIrajdzpJC+ww=", "narHash": "sha256-TkPLWSN5QcPlL9D0kc/yhH0/puE9bFND24aj5NVDKYs=",
"owner": "madler", "owner": "madler",
"repo": "zlib", "repo": "zlib",
"rev": "cacf7f1d4e3d44d871b605da3b647f07d718623f", "rev": "51b7f2abdade71cd9bb0e7a373ef2610ec6f9daf",
"type": "github" "type": "github"
}, },
"original": { "original": {
"owner": "madler", "owner": "madler",
"ref": "v1.2.11", "ref": "v1.3.1",
"repo": "zlib", "repo": "zlib",
"type": "github" "type": "github"
} }

View file

@ -19,6 +19,7 @@
url = "github:oskardotglobal/.dotfiles/nix"; url = "github:oskardotglobal/.dotfiles/nix";
inputs.nixpkgs.follows = "nixpkgs"; inputs.nixpkgs.follows = "nixpkgs";
}; };
niri-flake.url = "github:sodiboo/niri-flake";
nur = { nur = {
url = "github:nix-community/NUR"; url = "github:nix-community/NUR";
inputs.nixpkgs.follows = "nixpkgs"; inputs.nixpkgs.follows = "nixpkgs";
@ -26,6 +27,7 @@
nixos-cosmic.url = "github:lilyinstarlight/nixos-cosmic"; nixos-cosmic.url = "github:lilyinstarlight/nixos-cosmic";
ghostty.url = "github:ghostty-org/ghostty"; ghostty.url = "github:ghostty-org/ghostty";
nixos-hardware.url = "github:NixOS/nixos-hardware/master"; nixos-hardware.url = "github:NixOS/nixos-hardware/master";
dae.url = "github:daeuniverse/flake.nix";
}; };
outputs = outputs =
{ {
@ -41,6 +43,7 @@
inherit inputs; inherit inputs;
}; };
modules = [ modules = [
inputs.niri-flake.nixosModules.niri
{ {
nix.settings = { nix.settings = {
substituters = [ "https://cosmic.cachix.org/" ]; substituters = [ "https://cosmic.cachix.org/" ];
@ -50,6 +53,7 @@
(final: prev: { (final: prev: {
helix = inputs.helix.packages."${system}".default; helix = inputs.helix.packages."${system}".default;
}) })
inputs.niri-flake.overlays.niri
]; ];
} }
inputs.nixos-hardware.nixosModules.asus-fx506hm inputs.nixos-hardware.nixosModules.asus-fx506hm
@ -60,6 +64,7 @@
./hardware-configuration.nix ./hardware-configuration.nix
home-manager.nixosModules.home-manager home-manager.nixosModules.home-manager
./users ./users
inputs.dae.nixosModules.dae
]; ];
}; };
}; };

82
users/dae/config.dae Normal file
View file

@ -0,0 +1,82 @@
include {
proxy.d/*.dae
}
global {
# 绑定到 LAN 和/或 WAN 接口。将下述接口替换成你自己的接口名。
lan_interface: auto
wan_interface: auto
log_level: trace
allow_insecure: false
auto_config_kernel_parameter: true
dial_mode: domain
}
# 更多的 DNS 样例见 https://github.com/daeuniverse/dae/blob/main/docs/en/configuration/dns.md
dns {
upstream {
googledns: 'tcp+udp://8.8.8.8:53'
alidns: 'udp://114.114.114.114:53'
}
routing {
request {
fallback: alidns
}
response {
upstream(googledns) -> accept
ip(geoip: private) && !qname(geosite: cn) -> googledns
fallback: accept
}
}
}
group {
proxy {
filter: subtag(wget)
policy: min_moving_avg
}
us {
filter: subtag(wget) && name(keyword: "美国")
policy: min_moving_avg
}
hk {
filter: subtag(wget) && name(keyword: "香港")
policy: min_moving_avg
}
}
# 更多的 Routing 样例见 https://github.com/daeuniverse/dae/blob/main/docs/en/configuration/routing.md
routing {
pname(hickory-dns) && dport(53) -> must_direct
pname(mihomo) -> must_direct
domain(geosite:cn) -> direct
# personal config routing
domain(full: time.windows.com) -> must_direct
domain(suffix: 'hit.edu.cn') -> must_direct
domain(geosite: microsoft) -> proxy
# domain(geosite: onedrive) -> must_direct
domain(geosite: 'category-ai-chat-!cn') -> us
domain(geosite: google) -> us
domain(geosite: google-play) -> proxy
domain(geosite: apple) -> us
domain(keyword: spotify) -> us
domain(geosite: tiktok) -> us
dip(geoip:private) -> direct
dip(geoip:cn) -> direct
# dport(63434) && sip(192.168.31.170) -> hk
dip(223.5.5.5) -> direct
# ban qq dns over http
# dip(43.136.0.0/13) -> block
# dip(109.244.0.0/16) -> block
# dip(175.27.0.0/16) -> block
# dip('2409:8C1E:75B0:80::/64') -> block
## 禁用 h3因为它通常消耗很多 CPU 和内存资源
# l4proto(udp) && dport(443) -> block
fallback: proxy
}

114
users/dae/default.nix Normal file
View file

@ -0,0 +1,114 @@
{ pkgs, config, ... }:
{
services.dae = {
enable = true;
openFirewall = {
enable = true;
port = 12345;
};
disableTxChecksumIpGeneric = false;
config = builtins.readFile ./config.dae;
};
environment.etc."dae/urls.txt".source = ./urls.txt;
systemd.services =
let
new_proxy = "/etc/dae/proxy.d.new";
head = "user-agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.182 Safari/537.36";
update = ''
num=0
check=1
urls="$(${pkgs.coreutils}/bin/cat /etc/dae/urls.txt)"
mkdir -p ${new_proxy}
for url in "''${urls}"; do
txt=${new_proxy}/''${num}.txt
config="${new_proxy}/''${num}.dae"
${pkgs.curl}/bin/curl -H "${head}" "''${url}" > "''${txt}"
${pkgs.coreutils}/bin/echo "" > ''${config}
${pkgs.coreutils}/bin/echo 'subscription {' >> ''${config}
${pkgs.coreutils}/bin/echo \ \ wget:\ \"file\://proxy.d/''${num}.txt\" >> ''${config}
${pkgs.coreutils}/bin/echo } >> ''${config}
if [[ ! -s ''${txt} ]]; then
check=0
fi
${pkgs.coreutils}/bin/chmod 0640 ''${txt}
${pkgs.coreutils}/bin/chmod 0640 ''${config}
link=$((link+1))
if [[ ''${check} -eq 0 ]]; then
exit -1
fi
done
${pkgs.coreutils}/bin/rm -r /etc/dae/proxy.d
${pkgs.coreutils}/bin/mv ${new_proxy} /etc/dae/proxy.d
'';
in
{
"update-dae-subscription-immediate" = {
after = [ "network-online.target" ];
wants = [ "network-online.target" ];
before = [ "dae.service" ];
serviceConfig = {
Type = "oneshot";
ExecStart =
let
script = pkgs.writeTextFile {
name = "update-dae-subscription-immediate";
executable = true;
destination = "/bin/script";
text = ''
${pkgs.coreutils}/bin/mkdir -p /etc/proxy.d
if [ -z "$(ls -A /etc/dae/proxy.d 2>/dev/null)" ]; then
${pkgs.coreutils}/bin/echo "No subscription file found in /etc/dae/proxy.d. Update now..."
${update}
else
${pkgs.coreutils}/bin/echo "Found existing subscription files. Skipping immediate update."
fi
'';
};
in
[
"${pkgs.bash}/bin/bash ${script}/bin/script"
];
};
wantedBy = [ "multi-user.target" ];
};
"update-dae-subscription-weekly" = {
after = [ "network-online.target" ];
wants = [ "network-online.target" ];
wantedBy = [ "multi-user.target" ];
serviceConfig = {
Type = "oneshot";
ExecStartPre = [ "${config.systemd.package}/bin/systemctl stop dae.service" ];
ExecStartPost = [
"${config.systemd.package}/bin/systemctl start dae.service"
];
ExecStart =
let
script = pkgs.writeTextFile {
name = "update-dae-subscription-weekly";
executable = true;
destination = "/bin/script";
text = ''
${pkgs.coreutils}/bin/echo "Force subscription update..."
${pkgs.coreutils}/bin/mkdir -p /etc/proxy.d
${update}
'';
};
in
[
"${pkgs.bash}/bin/bash ${script}/bin/script"
];
};
};
};
systemd.timers."dae-update" = {
wantedBy = [ "timers.target" ];
timerConfig = {
OnCalendar = "weekly";
Unit = "dae-update.service";
Persistent = true;
};
};
}

1
users/dae/urls.txt Normal file
View file

@ -0,0 +1 @@
https://bava8u2znaj6bdzzjnfb.wgetcloud.online/link/df057715-3fa5-38c8-b550-316aa84c22c1?target=v2rayn&list=1&simple=1

View file

@ -14,6 +14,8 @@
} }
./steam.nix ./steam.nix
./spotify.nix ./spotify.nix
./nh.nix
./dae
]; ];
programs.fish.enable = true; programs.fish.enable = true;
users.users.david.shell = pkgs.fish; users.users.david.shell = pkgs.fish;

View file

@ -14,6 +14,8 @@
./firefox.nix ./firefox.nix
./foot ./foot
./ghostty ./ghostty
./niri
./zed.nix
]; ];
xdg.userDirs = { xdg.userDirs = {
enable = true; enable = true;

View file

@ -0,0 +1,291 @@
input {
keyboard {
xkb {
}
}
touchpad {
tap
natural-scroll
}
mouse {
}
trackpoint {
}
}
output "DP-1" {
mode "2560x1440@169.900"
scale 1
transform "normal"
position x=0 y=0
}
output "eDP-1" {
mode "2560x1440@165.003"
scale 1.5
transform "normal"
position x=2560 y=0
}
layout {
gaps 16
center-focused-column "never"
preset-column-widths {
proportion 0.33333
proportion 0.5
proportion 0.66667
}
// You can also customize the heights that "switch-preset-window-height" (Mod+Shift+R) toggles between.
// preset-window-heights { }
default-column-width {}
// By default focus ring and border are rendered as a solid background rectangle
// behind windows. That is, they will show up through semitransparent windows.
// This is because windows using client-side decorations can have an arbitrary shape.
//
// If you don't like that, you should uncomment `prefer-no-csd` below.
// Niri will draw focus ring and border *around* windows that agree to omit their
// client-side decorations.
//
// Alternatively, you can override it with a window rule called
// `draw-border-with-background`.
// You can change how the focus ring looks.
focus-ring {
// Uncomment this line to disable the focus ring.
// off
// How many logical pixels the ring extends out from the windows.
width 4
// Colors can be set in a variety of ways:
// - CSS named colors: "red"
// - RGB hex: "#rgb", "#rgba", "#rrggbb", "#rrggbbaa"
// - CSS-like notation: "rgb(255, 127, 0)", rgba(), hsl() and a few others.
// Color of the ring on the active monitor.
active-color "#7fc8ff"
// Color of the ring on inactive monitors.
inactive-color "#505050"
// You can also use gradients. They take precedence over solid colors.
// Gradients are rendered the same as CSS linear-gradient(angle, from, to).
// The angle is the same as in linear-gradient, and is optional,
// defaulting to 180 (top-to-bottom gradient).
// You can use any CSS linear-gradient tool on the web to set these up.
// Changing the color space is also supported, check the wiki for more info.
//
// active-gradient from="#80c8ff" to="#bbddff" angle=45
// You can also color the gradient relative to the entire view
// of the workspace, rather than relative to just the window itself.
// To do that, set relative-to="workspace-view".
//
// inactive-gradient from="#505050" to="#808080" angle=45 relative-to="workspace-view"
}
// You can also add a border. It's similar to the focus ring, but always visible.
border {
// The settings are the same as for the focus ring.
// If you enable the border, you probably want to disable the focus ring.
off
width 4
active-color "#ffc87f"
inactive-color "#505050"
// active-gradient from="#ffbb66" to="#ffc880" angle=45 relative-to="workspace-view"
// inactive-gradient from="#505050" to="#808080" angle=45 relative-to="workspace-view"
}
// Struts shrink the area occupied by windows, similarly to layer-shell panels.
// You can think of them as a kind of outer gaps. They are set in logical pixels.
// Left and right struts will cause the next window to the side to always be visible.
// Top and bottom struts will simply add outer gaps in addition to the area occupied by
// layer-shell panels and regular gaps.
struts {
// left 64
// right 64
// top 64
// bottom 64
}
}
// Add lines like this to spawn processes at startup.
// Note that running niri as a session supports xdg-desktop-autostart,
// which may be more convenient to use.
// See the binds section below for more spawn examples.
environment {
DISPLAY ":1"
}
spawn-at-startup "waybar"
spawn-at-startup "mako"
spawn-at-startup "swaybg" "-i" "/home/david/pic/wallpaper/screenbackground.png"
spawn-at-startup "fcitx5" "-d" "--replace"
spawn-at-startup "xwayland-satellite" ":1"
// Uncomment this line to ask the clients to omit their client-side decorations if possible.
// If the client will specifically ask for CSD, the request will be honored.
// Additionally, clients will be informed that they are tiled, removing some client-side rounded corners.
// This option will also fix border/focus ring drawing behind some semitransparent windows.
// After enabling or disabling this, you need to restart the apps for this to take effect.
// prefer-no-csd
screenshot-path "~/pic/screenshot%Y-%m-%d-%H-%M-%S.png"
// You can also set this to null to disable saving screenshots to disk.
// screenshot-path null
animations {
// Slow down all animations by this factor. Values below 1 speed them up instead.
// slowdown 3.0
}
window-rule {
match app-id=r#"^org\.wezfurlong\.wezterm$"#
default-column-width {}
}
window-rule {
match app-id=r#"^org\.keepassxc\.KeePassXC$"#
match app-id=r#"^org\.gnome\.World\.Secrets$"#
block-out-from "screen-capture"
}
window-rule {
draw-border-with-background false
}
// Example: enable rounded corners for all windows.
// (This example rule is commented out with a "/-" in front.)
/-window-rule {
geometry-corner-radius 12
clip-to-geometry true
}
binds {
Mod+Shift+Slash { show-hotkey-overlay; }
Mod+T { spawn "ghostty"; }
Mod+Space { spawn "fuzzel"; }
XF86AudioRaiseVolume allow-when-locked=true { spawn "wpctl" "set-volume" "@DEFAULT_AUDIO_SINK@" "0.1+"; }
XF86AudioLowerVolume allow-when-locked=true { spawn "wpctl" "set-volume" "@DEFAULT_AUDIO_SINK@" "0.1-"; }
XF86AudioMute allow-when-locked=true { spawn "wpctl" "set-mute" "@DEFAULT_AUDIO_SINK@" "toggle"; }
XF86AudioMicMute allow-when-locked=true { spawn "wpctl" "set-mute" "@DEFAULT_AUDIO_SOURCE@" "toggle"; }
Mod+Q { close-window; }
Mod+Left { focus-column-left; }
Mod+Down { focus-window-down; }
Mod+Up { focus-window-up; }
Mod+Right { focus-column-right; }
Mod+H { focus-column-left; }
Mod+J { focus-window-or-workspace-down; }
Mod+K { focus-window-or-workspace-up; }
Mod+L { focus-column-right; }
Mod+Shift+Left { move-column-left; }
Mod+Shift+Down { move-window-down; }
Mod+Shift+Up { move-window-up; }
Mod+Shift+Right { move-column-right; }
Mod+Shift+H { move-column-left; }
Mod+Shift+J { move-window-down-or-to-workspace-down; }
Mod+Shift+K { move-window-up-or-to-workspace-up; }
Mod+Shift+L { move-column-right; }
Mod+Home { focus-column-first; }
Mod+End { focus-column-last; }
Mod+Ctrl+Home { move-column-to-first; }
Mod+Ctrl+End { move-column-to-last; }
Mod+Ctrl+Left { focus-monitor-left; }
Mod+Ctrl+Down { focus-monitor-down; }
Mod+Ctrl+Up { focus-monitor-up; }
Mod+Ctrl+Right { focus-monitor-right; }
Mod+Ctrl+H { focus-monitor-left; }
Mod+Ctrl+J { focus-monitor-down; }
Mod+Ctrl+K { focus-monitor-up; }
Mod+Ctrl+L { focus-monitor-right; }
Mod+Shift+Ctrl+Left { move-column-to-monitor-left; }
Mod+Shift+Ctrl+Down { move-column-to-monitor-down; }
Mod+Shift+Ctrl+Up { move-column-to-monitor-up; }
Mod+Shift+Ctrl+Right { move-column-to-monitor-right; }
Mod+Shift+Ctrl+H { move-column-to-monitor-left; }
Mod+Shift+Ctrl+J { move-column-to-monitor-down; }
Mod+Shift+Ctrl+K { move-column-to-monitor-up; }
Mod+Shift+Ctrl+L { move-column-to-monitor-right; }
Mod+Page_Down { focus-workspace-down; }
Mod+Page_Up { focus-workspace-up; }
Mod+U { focus-workspace-down; }
Mod+I { focus-workspace-up; }
Mod+Shift+Page_Down { move-column-to-workspace-down; }
Mod+Shift+Page_Up { move-column-to-workspace-up; }
Mod+Shift+U { move-column-to-workspace-down; }
Mod+Shift+I { move-column-to-workspace-up; }
Mod+Ctrl+Page_Down { move-workspace-down; }
Mod+Ctrl+Page_Up { move-workspace-up; }
Mod+Ctrl+U { move-workspace-down; }
Mod+Ctrl+I { move-workspace-up; }
Mod+Shift+WheelScrollDown cooldown-ms=150 { focus-workspace-down; }
Mod+Shift+WheelScrollUp cooldown-ms=150 { focus-workspace-up; }
Mod+WheelScrollDown { focus-column-right; }
Mod+WheelScrollUp { focus-column-left; }
Mod+1 { focus-workspace 1; }
Mod+2 { focus-workspace 2; }
Mod+3 { focus-workspace 3; }
Mod+4 { focus-workspace 4; }
Mod+5 { focus-workspace 5; }
Mod+6 { focus-workspace 6; }
Mod+7 { focus-workspace 7; }
Mod+8 { focus-workspace 8; }
Mod+9 { focus-workspace 9; }
Mod+Shift+1 { move-column-to-workspace 1; }
Mod+Shift+2 { move-column-to-workspace 2; }
Mod+Shift+3 { move-column-to-workspace 3; }
Mod+Shift+4 { move-column-to-workspace 4; }
Mod+Shift+5 { move-column-to-workspace 5; }
Mod+Shift+6 { move-column-to-workspace 6; }
Mod+Shift+7 { move-column-to-workspace 7; }
Mod+Shift+8 { move-column-to-workspace 8; }
Mod+Shift+9 { move-column-to-workspace 9; }
Mod+Tab { focus-workspace-previous; }
Mod+BracketLeft { consume-or-expel-window-left; }
Mod+BracketRight { consume-or-expel-window-right; }
Mod+Comma { consume-window-into-column; }
Mod+Period { expel-window-from-column; }
Mod+R { switch-preset-column-width; }
Mod+Shift+R { switch-preset-window-height; }
Mod+Ctrl+R { reset-window-height; }
Mod+M { maximize-column; }
Mod+Shift+M { fullscreen-window; }
Mod+Z { center-column; }
Mod+Minus { set-column-width "-10%"; }
Mod+Equal { set-column-width "+10%"; }
Mod+Shift+Minus { set-window-height "-10%"; }
Mod+Shift+Equal { set-window-height "+10%"; }
Print { screenshot; }
Ctrl+Print { screenshot-screen; }
Alt+Print { screenshot-window; }
Mod+Shift+E { quit; }
}

View file

@ -0,0 +1,13 @@
{ pkgs, ... }:
{
programs.niri = {
package = pkgs.niri-unstable;
config = builtins.readFile ./config.kdl;
};
home.packages = with pkgs; [
mako
swaybg
xwayland-satellite
waybar
];
}

View file

@ -0,0 +1,15 @@
{ ... }:
{
programs.zed-editor = {
enable = true;
extensions = [
"nix"
"toml"
"make"
"rust"
];
userSettings = {
vim_mode = true;
};
};
}

11
users/nh.nix Normal file
View file

@ -0,0 +1,11 @@
{
...
}:
{
programs.nh = {
enable = true;
clean.enable = true;
clean.extraArgs = "--keep-since 4d --keep 3";
flake = ./..;
};
}