init
This commit is contained in:
commit
0df1237eb2
19 changed files with 1921 additions and 0 deletions
137
configuration.nix
Normal file
137
configuration.nix
Normal file
|
|
@ -0,0 +1,137 @@
|
||||||
|
# Edit this configuration file to define what should be installed on
|
||||||
|
# your system. Help is available in the configuration.nix(5) man page, on
|
||||||
|
# https://search.nixos.org/options and in the NixOS manual (`nixos-help`).
|
||||||
|
|
||||||
|
{ config
|
||||||
|
, lib
|
||||||
|
, pkgs
|
||||||
|
, ...
|
||||||
|
}:
|
||||||
|
|
||||||
|
{
|
||||||
|
imports = [
|
||||||
|
# Include the results of the hardware scan.
|
||||||
|
./hardware-configuration.nix
|
||||||
|
];
|
||||||
|
|
||||||
|
# Use the systemd-boot EFI boot loader.
|
||||||
|
boot.loader.systemd-boot.enable = true;
|
||||||
|
boot.loader.efi.canTouchEfiVariables = true;
|
||||||
|
|
||||||
|
networking.hostName = "twinkpad"; # Define your hostname.
|
||||||
|
# Pick only one of the below networking options.
|
||||||
|
# networking.wireless.enable = true; # Enables wireless support via wpa_supplicant.
|
||||||
|
networking.networkmanager.enable = true; # Easiest to use and most distros use this by default.
|
||||||
|
|
||||||
|
# Set your time zone.
|
||||||
|
time.timeZone = "Europe/Berlin";
|
||||||
|
|
||||||
|
# Configure network proxy if necessary
|
||||||
|
# networking.proxy.default = "http://user:password@proxy:port/";
|
||||||
|
# networking.proxy.noProxy = "127.0.0.1,localhost,internal.domain";
|
||||||
|
|
||||||
|
# Select internationalisation properties.
|
||||||
|
# i18n.defaultLocale = "en_US.UTF-8";
|
||||||
|
# console = {
|
||||||
|
# font = "Lat2-Terminus16";
|
||||||
|
# keyMap = "us";
|
||||||
|
# useXkbConfig = true; # use xkb.options in tty.
|
||||||
|
# };
|
||||||
|
|
||||||
|
# Enable the X11 windowing system.
|
||||||
|
services.xserver.enable = true;
|
||||||
|
|
||||||
|
# Enable the GNOME Desktop Environment.
|
||||||
|
services.xserver.displayManager.gdm.enable = true;
|
||||||
|
programs.niri.enable = true;
|
||||||
|
|
||||||
|
# Configure keymap in X11
|
||||||
|
# services.xserver.xkb.layout = "us";
|
||||||
|
# services.xserver.xkb.options = "eurosign:e,caps:escape";
|
||||||
|
|
||||||
|
# Enable CUPS to print documents.
|
||||||
|
services.printing.enable = true;
|
||||||
|
|
||||||
|
# Enable sound.
|
||||||
|
# services.pulseaudio.enable = true;
|
||||||
|
# OR
|
||||||
|
services.pipewire = {
|
||||||
|
enable = true;
|
||||||
|
alsa.enable = true;
|
||||||
|
alsa.support32Bit = true;
|
||||||
|
pulse.enable = true;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
# make pipewire realtime-capable
|
||||||
|
security.rtkit.enable = true;
|
||||||
|
|
||||||
|
# Enable touchpad support (enabled default in most desktopManager).
|
||||||
|
# services.libinput.enable = true;
|
||||||
|
|
||||||
|
# Define a user account. Don't forget to set a password with ‘passwd’.
|
||||||
|
users.mutableUsers = false;
|
||||||
|
users.users.lucy = {
|
||||||
|
initialHashedPassword = "$6$QX95LTUGi55mFQOZ$j19/LuGvMeWOBCp/oEOLWDU5rcrEfD9/2AQ3sW1OVMROMJEFpg/hTrWKnOgIUfzWtF32wUxNlThXIJm8YWJwZ.";
|
||||||
|
isNormalUser = true;
|
||||||
|
extraGroups = [ "wheel" ]; # Enable ‘sudo’ for the user.
|
||||||
|
packages = with pkgs; [
|
||||||
|
tree
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
programs.firefox.enable = true;
|
||||||
|
|
||||||
|
# List packages installed in system profile.
|
||||||
|
# You can use https://search.nixos.org/ to find more packages (and options).
|
||||||
|
environment.systemPackages = with pkgs; [
|
||||||
|
vim # Do not forget to add an editor to edit configuration.nix! The Nano editor is also installed by default.
|
||||||
|
wget
|
||||||
|
];
|
||||||
|
|
||||||
|
# Some programs need SUID wrappers, can be configured further or are
|
||||||
|
# started in user sessions.
|
||||||
|
programs.mtr.enable = true;
|
||||||
|
programs.gnupg.agent = {
|
||||||
|
enable = true;
|
||||||
|
enableSSHSupport = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
# List services that you want to enable:
|
||||||
|
|
||||||
|
# Enable the OpenSSH daemon.
|
||||||
|
# services.openssh.enable = true;
|
||||||
|
|
||||||
|
# Open ports in the firewall.
|
||||||
|
# networking.firewall.allowedTCPPorts = [ ... ];
|
||||||
|
# networking.firewall.allowedUDPPorts = [ ... ];
|
||||||
|
# Or disable the firewall altogether.
|
||||||
|
# networking.firewall.enable = false;
|
||||||
|
|
||||||
|
# Copy the NixOS configuration file and link it from the resulting system
|
||||||
|
# (/run/current-system/configuration.nix). This is useful in case you
|
||||||
|
# accidentally delete configuration.nix.
|
||||||
|
# system.copySystemConfiguration = true;
|
||||||
|
|
||||||
|
# This option defines the first version of NixOS you have installed on this particular machine,
|
||||||
|
# and is used to maintain compatibility with application data (e.g. databases) created on older NixOS versions.
|
||||||
|
#
|
||||||
|
# Most users should NEVER change this value after the initial install, for any reason,
|
||||||
|
# even if you've upgraded your system to a new NixOS release.
|
||||||
|
#
|
||||||
|
# This value does NOT affect the Nixpkgs version your packages and OS are pulled from,
|
||||||
|
# so changing it will NOT upgrade your system - see https://nixos.org/manual/nixos/stable/#sec-upgrading for how
|
||||||
|
# to actually do that.
|
||||||
|
#
|
||||||
|
# This value being lower than the current NixOS release does NOT mean your system is
|
||||||
|
# out of date, out of support, or vulnerable.
|
||||||
|
#
|
||||||
|
# Do NOT change this value unless you have manually inspected all the changes it would make to your configuration,
|
||||||
|
# and migrated your data accordingly.
|
||||||
|
#
|
||||||
|
# For more information, see `man configuration.nix` or https://nixos.org/manual/nixos/stable/options#opt-system.stateVersion .
|
||||||
|
system.stateVersion = "25.05"; # Did you read the comment?
|
||||||
|
|
||||||
|
nixpkgs.config.allowUnfree = true;
|
||||||
|
|
||||||
|
}
|
||||||
547
flake.lock
generated
Normal file
547
flake.lock
generated
Normal file
|
|
@ -0,0 +1,547 @@
|
||||||
|
{
|
||||||
|
"nodes": {
|
||||||
|
"c3d2-user-module": {
|
||||||
|
"inputs": {
|
||||||
|
"nixos-modules": "nixos-modules",
|
||||||
|
"nixpkgs": "nixpkgs"
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1754772133,
|
||||||
|
"narHash": "sha256-bGKm5L9ZzPzqKAK0Sp4l/nz/XOQnTkDhZWemHYytwvg=",
|
||||||
|
"ref": "refs/heads/master",
|
||||||
|
"rev": "cc347c4545cd8b8add0f3fc43d593f2ffcecfdef",
|
||||||
|
"revCount": 143,
|
||||||
|
"type": "git",
|
||||||
|
"url": "https://gitea.c3d2.de/C3D2/nix-user-module.git"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "https://gitea.c3d2.de/C3D2/nix-user-module.git"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"determinate": {
|
||||||
|
"inputs": {
|
||||||
|
"determinate-nixd-aarch64-darwin": "determinate-nixd-aarch64-darwin",
|
||||||
|
"determinate-nixd-aarch64-linux": "determinate-nixd-aarch64-linux",
|
||||||
|
"determinate-nixd-x86_64-darwin": [
|
||||||
|
"determinate",
|
||||||
|
"determinate-nixd-aarch64-darwin"
|
||||||
|
],
|
||||||
|
"determinate-nixd-x86_64-linux": "determinate-nixd-x86_64-linux",
|
||||||
|
"nix": "nix",
|
||||||
|
"nixpkgs": "nixpkgs_3"
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1757033802,
|
||||||
|
"narHash": "sha256-BLUHtWWoHFR6UJJJwkmivSv7RTjo92wlT0Y7kbCd2MY=",
|
||||||
|
"rev": "e154f8433851f8f2509490f33680e3285d553df4",
|
||||||
|
"revCount": 301,
|
||||||
|
"type": "tarball",
|
||||||
|
"url": "https://api.flakehub.com/f/pinned/DeterminateSystems/determinate/3.11.1/01991762-b4e5-7a3b-8bfc-5d0f1ed4965e/source.tar.gz"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"type": "tarball",
|
||||||
|
"url": "https://flakehub.com/f/DeterminateSystems/determinate/%2A"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"determinate-nixd-aarch64-darwin": {
|
||||||
|
"flake": false,
|
||||||
|
"locked": {
|
||||||
|
"narHash": "sha256-Dym4kTLMTxAxNyZcrHRKRVMBINQPA7qgr+7dHozNrps=",
|
||||||
|
"type": "file",
|
||||||
|
"url": "https://install.determinate.systems/determinate-nixd/tag/v3.11.1/macOS"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"type": "file",
|
||||||
|
"url": "https://install.determinate.systems/determinate-nixd/tag/v3.11.1/macOS"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"determinate-nixd-aarch64-linux": {
|
||||||
|
"flake": false,
|
||||||
|
"locked": {
|
||||||
|
"narHash": "sha256-eYVSpk+ly2YRSYvgT47ABmFRwG0DliNO/8ntBkoRmjI=",
|
||||||
|
"type": "file",
|
||||||
|
"url": "https://install.determinate.systems/determinate-nixd/tag/v3.11.1/aarch64-linux"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"type": "file",
|
||||||
|
"url": "https://install.determinate.systems/determinate-nixd/tag/v3.11.1/aarch64-linux"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"determinate-nixd-x86_64-linux": {
|
||||||
|
"flake": false,
|
||||||
|
"locked": {
|
||||||
|
"narHash": "sha256-ZvRoKG/v0WS2XrDgkV+/hq3ARGokGisyelncKwlefvk=",
|
||||||
|
"type": "file",
|
||||||
|
"url": "https://install.determinate.systems/determinate-nixd/tag/v3.11.1/x86_64-linux"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"type": "file",
|
||||||
|
"url": "https://install.determinate.systems/determinate-nixd/tag/v3.11.1/x86_64-linux"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"flake-compat": {
|
||||||
|
"flake": false,
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1696426674,
|
||||||
|
"narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=",
|
||||||
|
"owner": "edolstra",
|
||||||
|
"repo": "flake-compat",
|
||||||
|
"rev": "0f9255e01c2351cc7d116c072cb317785dd33b33",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "edolstra",
|
||||||
|
"repo": "flake-compat",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"flake-parts": {
|
||||||
|
"inputs": {
|
||||||
|
"nixpkgs-lib": [
|
||||||
|
"determinate",
|
||||||
|
"nix",
|
||||||
|
"nixpkgs"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1748821116,
|
||||||
|
"narHash": "sha256-F82+gS044J1APL0n4hH50GYdPRv/5JWm34oCJYmVKdE=",
|
||||||
|
"rev": "49f0870db23e8c1ca0b5259734a02cd9e1e371a1",
|
||||||
|
"revCount": 377,
|
||||||
|
"type": "tarball",
|
||||||
|
"url": "https://api.flakehub.com/f/pinned/hercules-ci/flake-parts/0.1.377%2Brev-49f0870db23e8c1ca0b5259734a02cd9e1e371a1/01972f28-554a-73f8-91f4-d488cc502f08/source.tar.gz"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"type": "tarball",
|
||||||
|
"url": "https://flakehub.com/f/hercules-ci/flake-parts/0.1"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"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"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"git-hooks-nix": {
|
||||||
|
"inputs": {
|
||||||
|
"flake-compat": "flake-compat",
|
||||||
|
"gitignore": [
|
||||||
|
"determinate",
|
||||||
|
"nix"
|
||||||
|
],
|
||||||
|
"nixpkgs": [
|
||||||
|
"determinate",
|
||||||
|
"nix",
|
||||||
|
"nixpkgs"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1747372754,
|
||||||
|
"narHash": "sha256-2Y53NGIX2vxfie1rOW0Qb86vjRZ7ngizoo+bnXU9D9k=",
|
||||||
|
"rev": "80479b6ec16fefd9c1db3ea13aeb038c60530f46",
|
||||||
|
"revCount": 1026,
|
||||||
|
"type": "tarball",
|
||||||
|
"url": "https://api.flakehub.com/f/pinned/cachix/git-hooks.nix/0.1.1026%2Brev-80479b6ec16fefd9c1db3ea13aeb038c60530f46/0196d79a-1b35-7b8e-a021-c894fb62163d/source.tar.gz"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"type": "tarball",
|
||||||
|
"url": "https://flakehub.com/f/cachix/git-hooks.nix/0.1.941"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"home-manager": {
|
||||||
|
"inputs": {
|
||||||
|
"nixpkgs": [
|
||||||
|
"nixpkgs"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1757385184,
|
||||||
|
"narHash": "sha256-LCxtQn9ajvOgGRbQIRUJgfP7clMGGvV1SDW1HcSb0zk=",
|
||||||
|
"owner": "nix-community",
|
||||||
|
"repo": "home-manager",
|
||||||
|
"rev": "26993d87fd0d3b14f7667b74ad82235f120d986e",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "nix-community",
|
||||||
|
"repo": "home-manager",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"niri": {
|
||||||
|
"inputs": {
|
||||||
|
"niri-stable": "niri-stable",
|
||||||
|
"niri-unstable": "niri-unstable",
|
||||||
|
"nixpkgs": "nixpkgs_4",
|
||||||
|
"nixpkgs-stable": "nixpkgs-stable",
|
||||||
|
"xwayland-satellite-stable": "xwayland-satellite-stable",
|
||||||
|
"xwayland-satellite-unstable": "xwayland-satellite-unstable"
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1757423134,
|
||||||
|
"narHash": "sha256-CZpxYEwjxLDdF1xGtrPJU2DX8k7Q5ajDBjBrjlEswik=",
|
||||||
|
"owner": "sodiboo",
|
||||||
|
"repo": "niri-flake",
|
||||||
|
"rev": "11d325391d1bbb4bb8f49010959f54bb1f6038b4",
|
||||||
|
"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-unstable": {
|
||||||
|
"flake": false,
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1757358784,
|
||||||
|
"narHash": "sha256-UNeUJW3c10z0aMJ87QKS85C/JgK9ng6pdRS0EwY6OLg=",
|
||||||
|
"owner": "YaLTeR",
|
||||||
|
"repo": "niri",
|
||||||
|
"rev": "bdee1a657699a77bc4cdb050f7355f37f64c45a6",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "YaLTeR",
|
||||||
|
"repo": "niri",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nix": {
|
||||||
|
"inputs": {
|
||||||
|
"flake-parts": "flake-parts",
|
||||||
|
"git-hooks-nix": "git-hooks-nix",
|
||||||
|
"nixpkgs": "nixpkgs_2",
|
||||||
|
"nixpkgs-23-11": "nixpkgs-23-11",
|
||||||
|
"nixpkgs-regression": "nixpkgs-regression"
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1757029043,
|
||||||
|
"narHash": "sha256-/XtKs/hpYXJPeT3WppFVFZH1WvPDmeTt11hMWt/Bwas=",
|
||||||
|
"rev": "7143558a0989008c8e08cc27c3cb6a031f30b356",
|
||||||
|
"revCount": 22309,
|
||||||
|
"type": "tarball",
|
||||||
|
"url": "https://api.flakehub.com/f/pinned/DeterminateSystems/nix-src/3.11.1/01991737-661d-7932-b7c9-d3a0499b4c3f/source.tar.gz"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"type": "tarball",
|
||||||
|
"url": "https://flakehub.com/f/DeterminateSystems/nix-src/%2A"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nix-index-db": {
|
||||||
|
"inputs": {
|
||||||
|
"nixpkgs": [
|
||||||
|
"nixpkgs"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1757218147,
|
||||||
|
"narHash": "sha256-IwOwN70HvoBNB2ckaROxcaCvj5NudNc52taPsv5wtLk=",
|
||||||
|
"owner": "Mic92",
|
||||||
|
"repo": "nix-index-database",
|
||||||
|
"rev": "9b144dc3ef6e42b888c4190e02746aab13b0e97f",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "Mic92",
|
||||||
|
"repo": "nix-index-database",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nixos-hardware": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1757103352,
|
||||||
|
"narHash": "sha256-PtT7ix43ss8PONJ1VJw3f6t2yAoGH+q462Sn8lrmWmk=",
|
||||||
|
"owner": "NixOS",
|
||||||
|
"repo": "nixos-hardware",
|
||||||
|
"rev": "11b2a10c7be726321bb854403fdeec391e798bf0",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "NixOS",
|
||||||
|
"ref": "master",
|
||||||
|
"repo": "nixos-hardware",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nixos-modules": {
|
||||||
|
"inputs": {
|
||||||
|
"flake-utils": "flake-utils",
|
||||||
|
"nixpkgs": [
|
||||||
|
"c3d2-user-module",
|
||||||
|
"nixpkgs"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1748287559,
|
||||||
|
"narHash": "sha256-dvUE9HGwzEXyv6G7LuZFQCmRYFuXLJBO4+crCTxe5zs=",
|
||||||
|
"owner": "NuschtOS",
|
||||||
|
"repo": "nixos-modules",
|
||||||
|
"rev": "9ae063877f8c5d42c39b739ae1d00f9657ad17f4",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "NuschtOS",
|
||||||
|
"repo": "nixos-modules",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nixpkgs": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1749143949,
|
||||||
|
"narHash": "sha256-QuUtALJpVrPnPeozlUG/y+oIMSLdptHxb3GK6cpSVhA=",
|
||||||
|
"owner": "NixOS",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"rev": "d3d2d80a2191a73d1e86456a751b83aa13085d7d",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "NixOS",
|
||||||
|
"ref": "nixos-unstable",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nixpkgs-23-11": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1717159533,
|
||||||
|
"narHash": "sha256-oamiKNfr2MS6yH64rUn99mIZjc45nGJlj9eGth/3Xuw=",
|
||||||
|
"owner": "NixOS",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"rev": "a62e6edd6d5e1fa0329b8653c801147986f8d446",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "NixOS",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"rev": "a62e6edd6d5e1fa0329b8653c801147986f8d446",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nixpkgs-regression": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1643052045,
|
||||||
|
"narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=",
|
||||||
|
"owner": "NixOS",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "NixOS",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nixpkgs-stable": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1757341549,
|
||||||
|
"narHash": "sha256-fRnT+bwP1sB6ne7BLw4aXkVYjr+QCZZ+e4MhbokHyd4=",
|
||||||
|
"owner": "NixOS",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"rev": "9d1fa9fa266631335618373f8faad570df6f9ede",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "NixOS",
|
||||||
|
"ref": "nixos-25.05",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nixpkgs_2": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1755922037,
|
||||||
|
"narHash": "sha256-wY1+2JPH0ZZC4BQefoZw/k+3+DowFyfOxv17CN/idKs=",
|
||||||
|
"rev": "b1b3291469652d5a2edb0becc4ef0246fff97a7c",
|
||||||
|
"revCount": 808723,
|
||||||
|
"type": "tarball",
|
||||||
|
"url": "https://api.flakehub.com/f/pinned/NixOS/nixpkgs/0.2505.808723%2Brev-b1b3291469652d5a2edb0becc4ef0246fff97a7c/0198daf7-011a-7703-95d7-57146e794342/source.tar.gz"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"type": "tarball",
|
||||||
|
"url": "https://flakehub.com/f/NixOS/nixpkgs/0.2505"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nixpkgs_3": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1756696532,
|
||||||
|
"narHash": "sha256-6FWagzm0b7I/IGigOv9pr6LL7NQ86mextfE8g8Q6HBg=",
|
||||||
|
"rev": "58dcbf1ec551914c3756c267b8b9c8c86baa1b2f",
|
||||||
|
"revCount": 854745,
|
||||||
|
"type": "tarball",
|
||||||
|
"url": "https://api.flakehub.com/f/pinned/DeterminateSystems/nixpkgs-weekly/0.1.854745%2Brev-58dcbf1ec551914c3756c267b8b9c8c86baa1b2f/019908ed-e731-796e-b7c5-ea173f5d3b8d/source.tar.gz"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"type": "tarball",
|
||||||
|
"url": "https://flakehub.com/f/DeterminateSystems/nixpkgs-weekly/0.1"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nixpkgs_4": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1757347588,
|
||||||
|
"narHash": "sha256-tLdkkC6XnsY9EOZW9TlpesTclELy8W7lL2ClL+nma8o=",
|
||||||
|
"owner": "NixOS",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"rev": "b599843bad24621dcaa5ab60dac98f9b0eb1cabe",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "NixOS",
|
||||||
|
"ref": "nixos-unstable",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nixpkgs_5": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1757347588,
|
||||||
|
"narHash": "sha256-tLdkkC6XnsY9EOZW9TlpesTclELy8W7lL2ClL+nma8o=",
|
||||||
|
"owner": "nixos",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"rev": "b599843bad24621dcaa5ab60dac98f9b0eb1cabe",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "nixos",
|
||||||
|
"ref": "nixos-unstable",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"quickshell": {
|
||||||
|
"inputs": {
|
||||||
|
"nixpkgs": [
|
||||||
|
"nixpkgs"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1756981260,
|
||||||
|
"narHash": "sha256-GhuD9QVimjynHI0OOyZsqJsnlXr2orowh9H+HYz4YMs=",
|
||||||
|
"ref": "refs/heads/master",
|
||||||
|
"rev": "6eb12551baf924f8fdecdd04113863a754259c34",
|
||||||
|
"revCount": 672,
|
||||||
|
"type": "git",
|
||||||
|
"url": "https://git.outfoxxed.me/quickshell/quickshell"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "https://git.outfoxxed.me/quickshell/quickshell"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"root": {
|
||||||
|
"inputs": {
|
||||||
|
"c3d2-user-module": "c3d2-user-module",
|
||||||
|
"determinate": "determinate",
|
||||||
|
"home-manager": "home-manager",
|
||||||
|
"niri": "niri",
|
||||||
|
"nix-index-db": "nix-index-db",
|
||||||
|
"nixos-hardware": "nixos-hardware",
|
||||||
|
"nixpkgs": "nixpkgs_5",
|
||||||
|
"quickshell": "quickshell",
|
||||||
|
"treefmt-nix": "treefmt-nix"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"systems": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1681028828,
|
||||||
|
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
|
||||||
|
"owner": "nix-systems",
|
||||||
|
"repo": "default",
|
||||||
|
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "nix-systems",
|
||||||
|
"repo": "default",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"treefmt-nix": {
|
||||||
|
"inputs": {
|
||||||
|
"nixpkgs": [
|
||||||
|
"nixpkgs"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1756662192,
|
||||||
|
"narHash": "sha256-F1oFfV51AE259I85av+MAia221XwMHCOtZCMcZLK2Jk=",
|
||||||
|
"owner": "numtide",
|
||||||
|
"repo": "treefmt-nix",
|
||||||
|
"rev": "1aabc6c05ccbcbf4a635fb7a90400e44282f61c4",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "numtide",
|
||||||
|
"repo": "treefmt-nix",
|
||||||
|
"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": 1757179758,
|
||||||
|
"narHash": "sha256-TIvyWzRt1miQj6Cf5Wy8Qz43XIZX7c4vTVwRLAT5S4Y=",
|
||||||
|
"owner": "Supreeeme",
|
||||||
|
"repo": "xwayland-satellite",
|
||||||
|
"rev": "970728d0d9d1eada342bb8860af214b601139e58",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "Supreeeme",
|
||||||
|
"repo": "xwayland-satellite",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"root": "root",
|
||||||
|
"version": 7
|
||||||
|
}
|
||||||
135
flake.nix
Normal file
135
flake.nix
Normal file
|
|
@ -0,0 +1,135 @@
|
||||||
|
{
|
||||||
|
description = "A very basic flake";
|
||||||
|
|
||||||
|
inputs = {
|
||||||
|
nixpkgs.url = "github:nixos/nixpkgs?ref=nixos-unstable";
|
||||||
|
c3d2-user-module.url = "git+https://gitea.c3d2.de/C3D2/nix-user-module.git";
|
||||||
|
home-manager = {
|
||||||
|
url = "github:nix-community/home-manager";
|
||||||
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
|
};
|
||||||
|
niri.url = "github:sodiboo/niri-flake";
|
||||||
|
nixos-hardware.url = "github:NixOS/nixos-hardware/master";
|
||||||
|
treefmt-nix = {
|
||||||
|
url = "github:numtide/treefmt-nix";
|
||||||
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
|
};
|
||||||
|
determinate.url = "https://flakehub.com/f/DeterminateSystems/determinate/*";
|
||||||
|
nix-index-db = {
|
||||||
|
url = "github:Mic92/nix-index-database";
|
||||||
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
|
};
|
||||||
|
quickshell = {
|
||||||
|
url = "git+https://git.outfoxxed.me/quickshell/quickshell";
|
||||||
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
outputs =
|
||||||
|
inputs@{ self
|
||||||
|
, nixpkgs
|
||||||
|
, c3d2-user-module
|
||||||
|
, home-manager
|
||||||
|
, niri
|
||||||
|
, nixos-hardware
|
||||||
|
, treefmt-nix
|
||||||
|
, determinate
|
||||||
|
, nix-index-db
|
||||||
|
, quickshell
|
||||||
|
,
|
||||||
|
}:
|
||||||
|
let
|
||||||
|
system = "x86_64-linux";
|
||||||
|
pkgs = nixpkgs.legacyPackages.${system};
|
||||||
|
|
||||||
|
# Configure treefmt
|
||||||
|
treefmtEval = treefmt-nix.lib.evalModule pkgs {
|
||||||
|
projectRootFile = "flake.nix";
|
||||||
|
programs = {
|
||||||
|
nixpkgs-fmt.enable = true;
|
||||||
|
prettier = {
|
||||||
|
enable = true;
|
||||||
|
includes = [
|
||||||
|
"*.json"
|
||||||
|
"*.yaml"
|
||||||
|
"*.yml"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
taplo.enable = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
settings = {
|
||||||
|
global.excludes = [
|
||||||
|
"*.lock"
|
||||||
|
"result"
|
||||||
|
".git/"
|
||||||
|
"*.md"
|
||||||
|
"*.sh"
|
||||||
|
"*.py"
|
||||||
|
"*.js"
|
||||||
|
"*.ts"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
in
|
||||||
|
{
|
||||||
|
nixosConfigurations.p50 = nixpkgs.lib.nixosSystem {
|
||||||
|
specialArgs = { inherit inputs; };
|
||||||
|
system = "x86_64-linux";
|
||||||
|
modules = [
|
||||||
|
niri.nixosModules.niri
|
||||||
|
nixos-hardware.nixosModules.lenovo-thinkpad-p50
|
||||||
|
./configuration.nix
|
||||||
|
determinate.nixosModules.default
|
||||||
|
home-manager.nixosModules.home-manager
|
||||||
|
{
|
||||||
|
home-manager.useGlobalPkgs = true;
|
||||||
|
home-manager.useUserPackages = true;
|
||||||
|
home-manager.users.lucy =
|
||||||
|
{ config
|
||||||
|
, pkgs
|
||||||
|
, lib
|
||||||
|
, inputs
|
||||||
|
, ...
|
||||||
|
}:
|
||||||
|
{
|
||||||
|
imports = [
|
||||||
|
./modules/home.nix
|
||||||
|
];
|
||||||
|
|
||||||
|
# Configure dconf settings here or inside home.nix
|
||||||
|
# Example:
|
||||||
|
# home.sessionVariables = {
|
||||||
|
# XDG_CURRENT_DESKTOP = "GNOME";
|
||||||
|
# };
|
||||||
|
};
|
||||||
|
}
|
||||||
|
c3d2-user-module.nixosModule
|
||||||
|
./modules/nix.nix
|
||||||
|
./modules/fonts.nix
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
# Add treefmt formatter
|
||||||
|
formatter.${system} = treefmtEval.config.build.wrapper;
|
||||||
|
|
||||||
|
# Optional: Add a dev shell with treefmt
|
||||||
|
devShells.${system}.default = pkgs.mkShell {
|
||||||
|
buildInputs = with pkgs; [
|
||||||
|
git
|
||||||
|
treefmtEval.config.build.wrapper
|
||||||
|
];
|
||||||
|
|
||||||
|
shellHook = ''
|
||||||
|
echo "Development shell loaded!"
|
||||||
|
echo "Run 'nix fmt' to format all files"
|
||||||
|
echo "Run 'treefmt' to format with treefmt directly"
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
# Optional: Add formatting check
|
||||||
|
checks.${system} = {
|
||||||
|
formatting = treefmtEval.config.build.check self;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
65
hardware-configuration.nix
Normal file
65
hardware-configuration.nix
Normal file
|
|
@ -0,0 +1,65 @@
|
||||||
|
# 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 = [ "xhci_pci" "ahci" "nvme" "uas" "usbhid" "sd_mod" "rtsx_pci_sdmmc" ];
|
||||||
|
boot.initrd.kernelModules = [ ];
|
||||||
|
boot.kernelModules = [ "kvm-intel" ];
|
||||||
|
boot.extraModulePackages = [ ];
|
||||||
|
|
||||||
|
fileSystems."/" =
|
||||||
|
{
|
||||||
|
device = "none";
|
||||||
|
fsType = "tmpfs";
|
||||||
|
options = [ "defaults" "size=8G" "mode=755" ];
|
||||||
|
};
|
||||||
|
|
||||||
|
fileSystems."/boot" =
|
||||||
|
{
|
||||||
|
device = "/dev/disk/by-uuid/0777-71C3";
|
||||||
|
fsType = "vfat";
|
||||||
|
options = [ "fmask=0022" "dmask=0022" ];
|
||||||
|
};
|
||||||
|
|
||||||
|
fileSystems."/nix" =
|
||||||
|
{
|
||||||
|
device = "/dev/disk/by-uuid/3a8c6986-3105-4f1f-a75b-f72e4ec5ecdc";
|
||||||
|
fsType = "ext4";
|
||||||
|
};
|
||||||
|
|
||||||
|
boot.initrd.luks.devices."nix".device = "/dev/disk/by-uuid/439beee9-6797-41bc-bc4f-01bfe1a75166";
|
||||||
|
|
||||||
|
fileSystems."/etc/nixos" =
|
||||||
|
{
|
||||||
|
device = "/nix/persist/etc/nixos";
|
||||||
|
fsType = "none";
|
||||||
|
options = [ "bind" ];
|
||||||
|
};
|
||||||
|
|
||||||
|
fileSystems."/var/log" =
|
||||||
|
{
|
||||||
|
device = "/nix/persist/var/log";
|
||||||
|
fsType = "none";
|
||||||
|
options = [ "bind" ];
|
||||||
|
};
|
||||||
|
|
||||||
|
swapDevices = [ ];
|
||||||
|
|
||||||
|
# Enables DHCP on each ethernet and wireless interface. In case of scripted networking
|
||||||
|
# (the default) this is the recommended approach. When using systemd-networkd it's
|
||||||
|
# still possible to use this option, but it's recommended to use it in conjunction
|
||||||
|
# with explicit per-interface declarations with `networking.interfaces.<interface>.useDHCP`.
|
||||||
|
networking.useDHCP = lib.mkDefault true;
|
||||||
|
# networking.interfaces.enp0s31f6.useDHCP = lib.mkDefault true;
|
||||||
|
# networking.interfaces.wlp4s0.useDHCP = lib.mkDefault true;
|
||||||
|
|
||||||
|
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
|
||||||
|
hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
|
||||||
|
}
|
||||||
49
modules/alacritty.nix
Normal file
49
modules/alacritty.nix
Normal file
|
|
@ -0,0 +1,49 @@
|
||||||
|
{ ... }: {
|
||||||
|
programs.alacritty.enable = true;
|
||||||
|
programs.alacritty.settings = {
|
||||||
|
window.opacity = 0.8;
|
||||||
|
colors.bright = {
|
||||||
|
black = "#444b6a";
|
||||||
|
blue = "#7da6ff";
|
||||||
|
cyan = "#0db9d7";
|
||||||
|
green = "#b9f27c";
|
||||||
|
magenta = "#bb9af7";
|
||||||
|
red = "#ff7a93";
|
||||||
|
white = "#acb0d0";
|
||||||
|
yellow = "#ff9e64";
|
||||||
|
};
|
||||||
|
colors.normal = {
|
||||||
|
black = "#32344a";
|
||||||
|
blue = "#7aa2f7";
|
||||||
|
cyan = "#449dab";
|
||||||
|
green = "#9ece6a";
|
||||||
|
magenta = "#ad8ee6";
|
||||||
|
red = "#f7768e";
|
||||||
|
white = "#787c99";
|
||||||
|
yellow = "#e0af68";
|
||||||
|
};
|
||||||
|
colors.primary = {
|
||||||
|
background = "#1a1b26";
|
||||||
|
foreground = "#a9b1d6";
|
||||||
|
};
|
||||||
|
font = {
|
||||||
|
normal = {
|
||||||
|
family = "Iosevka";
|
||||||
|
style = "Regular";
|
||||||
|
};
|
||||||
|
bold = {
|
||||||
|
family = "Iosevka";
|
||||||
|
style = "Bold";
|
||||||
|
};
|
||||||
|
italic = {
|
||||||
|
family = "Iosevka";
|
||||||
|
style = "Italic";
|
||||||
|
};
|
||||||
|
bold_italic = {
|
||||||
|
family = "Iosevka";
|
||||||
|
style = "Bold Italic";
|
||||||
|
};
|
||||||
|
size = 18.0; # Adjust the font size as needed
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
7
modules/fonts.nix
Normal file
7
modules/fonts.nix
Normal file
|
|
@ -0,0 +1,7 @@
|
||||||
|
{ pkgs, ... }:
|
||||||
|
{
|
||||||
|
fonts.packages = with pkgs; [
|
||||||
|
iosevka
|
||||||
|
comic-mono
|
||||||
|
];
|
||||||
|
}
|
||||||
27
modules/gammastep.nix
Normal file
27
modules/gammastep.nix
Normal file
|
|
@ -0,0 +1,27 @@
|
||||||
|
{ pkgs, ... }:
|
||||||
|
{
|
||||||
|
services.gammastep = {
|
||||||
|
enable = true;
|
||||||
|
package = pkgs.gammastep.override {
|
||||||
|
withRandr = false;
|
||||||
|
withDrm = false;
|
||||||
|
withVidmode = false;
|
||||||
|
withAppIndicator = false;
|
||||||
|
};
|
||||||
|
|
||||||
|
latitude = "-34.58";
|
||||||
|
longitude = "-58.64";
|
||||||
|
provider = "manual";
|
||||||
|
temperature = {
|
||||||
|
day = 5500;
|
||||||
|
night = 3500;
|
||||||
|
};
|
||||||
|
settings = {
|
||||||
|
general = {
|
||||||
|
brightness-day = 1.0;
|
||||||
|
brightness-night = 0.5;
|
||||||
|
adjustment-method = "wayland";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
30
modules/helix.nix
Normal file
30
modules/helix.nix
Normal file
|
|
@ -0,0 +1,30 @@
|
||||||
|
{ lib, pkgs, ... }: {
|
||||||
|
programs.helix = {
|
||||||
|
enable = true;
|
||||||
|
settings = {
|
||||||
|
theme = "autumn_night_transparent";
|
||||||
|
editor.cursor-shape = {
|
||||||
|
normal = "block";
|
||||||
|
insert = "bar";
|
||||||
|
select = "underline";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
languages = {
|
||||||
|
language = [{
|
||||||
|
name = "nix";
|
||||||
|
auto-format = true;
|
||||||
|
formatter.command = "${pkgs.nixfmt}/bin/nixfmt";
|
||||||
|
language-servers = [ "nixd" ];
|
||||||
|
}];
|
||||||
|
language-server.nixd = { command = lib.getExe pkgs.nixd; };
|
||||||
|
};
|
||||||
|
themes = {
|
||||||
|
autumn_night_transparent = {
|
||||||
|
"inherits" = "autumn_night";
|
||||||
|
"ui.background" = { };
|
||||||
|
};
|
||||||
|
};
|
||||||
|
extraPackages = with pkgs; [ nil rust-analyzer gopls ];
|
||||||
|
};
|
||||||
|
|
||||||
|
}
|
||||||
164
modules/home.nix
Normal file
164
modules/home.nix
Normal file
|
|
@ -0,0 +1,164 @@
|
||||||
|
{
|
||||||
|
config,
|
||||||
|
pkgs,
|
||||||
|
inputs,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
{
|
||||||
|
imports = [
|
||||||
|
./helix.nix
|
||||||
|
./alacritty.nix
|
||||||
|
./nushell.nix
|
||||||
|
./waybar.nix
|
||||||
|
./niri
|
||||||
|
./quickshell.nix
|
||||||
|
./gammastep.nix
|
||||||
|
./hypridle.nix
|
||||||
|
];
|
||||||
|
|
||||||
|
# TODO please change the username & home directory to your own
|
||||||
|
home.username = "lucy";
|
||||||
|
home.homeDirectory = "/home/${config.home.username}";
|
||||||
|
# link the configuration file in current directory to the specified location in home directory
|
||||||
|
# home.file.".config/i3/wallpaper.jpg".source = ./wallpaper.jpg;
|
||||||
|
|
||||||
|
# link all files in `./scripts` to `~/.config/i3/scripts`
|
||||||
|
# home.file.".config/i3/scripts" = {
|
||||||
|
# source = ./scripts;
|
||||||
|
# recursive = true; # link recursively
|
||||||
|
# executable = true; # make all files executable
|
||||||
|
# };
|
||||||
|
|
||||||
|
# encode the file content in nix configuration file directly
|
||||||
|
# home.file.".xxx".text = ''
|
||||||
|
# xxx
|
||||||
|
# '';
|
||||||
|
|
||||||
|
manual = {
|
||||||
|
html.enable = false;
|
||||||
|
json.enable = false;
|
||||||
|
manpages.enable = false;
|
||||||
|
};
|
||||||
|
|
||||||
|
programs.nix-index = {
|
||||||
|
enable = true;
|
||||||
|
};
|
||||||
|
/*
|
||||||
|
stylix = {
|
||||||
|
enable = true;
|
||||||
|
polarity = "dark";
|
||||||
|
opacity = {
|
||||||
|
popups = 1.0;
|
||||||
|
terminal = 1.0;
|
||||||
|
};
|
||||||
|
|
||||||
|
fonts = {
|
||||||
|
serif = config.stylix.fonts.sansSerif;
|
||||||
|
sansSerif = {
|
||||||
|
package = pkgs.adwaita-fonts;
|
||||||
|
name = "Adwaita Sans";
|
||||||
|
};
|
||||||
|
|
||||||
|
monospace = {
|
||||||
|
package = pkgs.nerd-fonts.geist-mono;
|
||||||
|
name = "Geist Nerd Font Mono";
|
||||||
|
};
|
||||||
|
|
||||||
|
emoji = {
|
||||||
|
package = pkgs.noto-fonts-emoji;
|
||||||
|
name = "Noto Color Emoji";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
*/
|
||||||
|
# set cursor size and dpi for 4k monitor
|
||||||
|
|
||||||
|
# Packages that should be installed to the user profile.
|
||||||
|
home.packages = with pkgs; [
|
||||||
|
# here is some command line tools I use frequently
|
||||||
|
# feel free to add your own or remove some of them
|
||||||
|
|
||||||
|
aerc
|
||||||
|
|
||||||
|
hyfetch
|
||||||
|
nnn # terminal file manager
|
||||||
|
|
||||||
|
prismlauncher
|
||||||
|
|
||||||
|
# archives
|
||||||
|
zip
|
||||||
|
xz
|
||||||
|
unzip
|
||||||
|
p7zip
|
||||||
|
|
||||||
|
# utils
|
||||||
|
ripgrep # recursively searches directories for a regex pattern
|
||||||
|
jq # A lightweight and flexible command-line JSON processor
|
||||||
|
yq-go # yaml processor https://github.com/mikefarah/yq
|
||||||
|
eza # A modern replacement for ‘ls’
|
||||||
|
fzf # A command-line fuzzy finder
|
||||||
|
|
||||||
|
# networking tools
|
||||||
|
mtr # A network diagnostic tool
|
||||||
|
iperf3
|
||||||
|
dnsutils # `dig` + `nslookup`
|
||||||
|
ldns # replacement of `dig`, it provide the command `drill`
|
||||||
|
aria2 # A lightweight multi-protocol & multi-source command-line download utility
|
||||||
|
socat # replacement of openbsd-netcat
|
||||||
|
nmap # A utility for network discovery and security auditing
|
||||||
|
ipcalc # it is a calculator for the IPv4/v6 addresses
|
||||||
|
|
||||||
|
# misc
|
||||||
|
cowsay
|
||||||
|
file
|
||||||
|
which
|
||||||
|
tree
|
||||||
|
gnused
|
||||||
|
gnutar
|
||||||
|
gawk
|
||||||
|
zstd
|
||||||
|
gnupg
|
||||||
|
|
||||||
|
# nix related
|
||||||
|
#
|
||||||
|
# it provides the command `nom` works just like `nix`
|
||||||
|
# with more details log output
|
||||||
|
nix-output-monitor
|
||||||
|
|
||||||
|
# productivity
|
||||||
|
hugo # static site generator
|
||||||
|
glow # markdown previewer in terminal
|
||||||
|
|
||||||
|
btop # replacement of htop/nmon
|
||||||
|
iotop # io monitoring
|
||||||
|
iftop # network monitoring
|
||||||
|
|
||||||
|
# system call monitoring
|
||||||
|
strace # system call monitoring
|
||||||
|
ltrace # library call monitoring
|
||||||
|
lsof # list open files
|
||||||
|
|
||||||
|
# system tools
|
||||||
|
sysstat
|
||||||
|
lm_sensors # for `sensors` command
|
||||||
|
ethtool
|
||||||
|
pciutils # lspci
|
||||||
|
usbutils # lsusb
|
||||||
|
|
||||||
|
tcsh
|
||||||
|
fuzzel
|
||||||
|
seatd
|
||||||
|
jaq
|
||||||
|
];
|
||||||
|
# basic configuration of git, please change to your own
|
||||||
|
programs.git = {
|
||||||
|
enable = true;
|
||||||
|
userName = "Lucy von Overheidt";
|
||||||
|
userEmail = "git@lucy.giving";
|
||||||
|
};
|
||||||
|
|
||||||
|
home.stateVersion = "24.11";
|
||||||
|
|
||||||
|
programs.home-manager.enable = true;
|
||||||
|
|
||||||
|
}
|
||||||
44
modules/hypridle.nix
Normal file
44
modules/hypridle.nix
Normal file
|
|
@ -0,0 +1,44 @@
|
||||||
|
{
|
||||||
|
pkgs,
|
||||||
|
lib,
|
||||||
|
config,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
let
|
||||||
|
lock = "${pkgs.systemd}/bin/loginctl lock-session";
|
||||||
|
|
||||||
|
brillo = lib.getExe pkgs.brillo;
|
||||||
|
|
||||||
|
# timeout after which DPMS kicks in
|
||||||
|
timeout = 300;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
# screen idle
|
||||||
|
services.hypridle = {
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
settings = {
|
||||||
|
general.lock_cmd = lib.getExe config.programs.hyprlock.package;
|
||||||
|
|
||||||
|
listener = [
|
||||||
|
{
|
||||||
|
timeout = timeout - 10;
|
||||||
|
# save the current brightness and dim the screen over a period of
|
||||||
|
# 500 ms
|
||||||
|
on-timeout = "${brillo} -O; ${brillo} -u 500000 -S 10";
|
||||||
|
# brighten the screen over a period of 250ms to the saved value
|
||||||
|
on-resume = "${brillo} -I -u 250000";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
inherit timeout;
|
||||||
|
}
|
||||||
|
{
|
||||||
|
timeout = timeout + 10;
|
||||||
|
on-timeout = lock;
|
||||||
|
}
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
systemd.user.services.hypridle.Unit.After = lib.mkForce "graphical-session.target";
|
||||||
|
}
|
||||||
144
modules/niri/binds.nix
Normal file
144
modules/niri/binds.nix
Normal file
|
|
@ -0,0 +1,144 @@
|
||||||
|
{ config, pkgs, ... }:
|
||||||
|
|
||||||
|
let
|
||||||
|
lib = pkgs.lib;
|
||||||
|
qs = "${pkgs.quickshell}/bin/qs";
|
||||||
|
|
||||||
|
# Niri built-in actions
|
||||||
|
inherit (config.lib.niri.actions)
|
||||||
|
spawn
|
||||||
|
close-window
|
||||||
|
maximize-column
|
||||||
|
screenshot-window
|
||||||
|
screenshot
|
||||||
|
focus-column-left
|
||||||
|
focus-column-right
|
||||||
|
focus-workspace-up
|
||||||
|
focus-workspace-down
|
||||||
|
;
|
||||||
|
|
||||||
|
# Helper to call QuickShell
|
||||||
|
qsCall =
|
||||||
|
args:
|
||||||
|
spawn (
|
||||||
|
[
|
||||||
|
qs
|
||||||
|
"-c"
|
||||||
|
"DankMaterialShell"
|
||||||
|
"ipc"
|
||||||
|
"call"
|
||||||
|
]
|
||||||
|
++ args
|
||||||
|
);
|
||||||
|
|
||||||
|
# Generate workspace focus binds (Mod+1 to Mod+9)
|
||||||
|
wsBinds = builtins.listToAttrs (
|
||||||
|
builtins.genList (i: {
|
||||||
|
name = "Mod+${toString (i + 1)}";
|
||||||
|
value.action.focus-workspace = i + 1;
|
||||||
|
}) 9
|
||||||
|
);
|
||||||
|
|
||||||
|
in
|
||||||
|
{
|
||||||
|
programs.niri.settings.binds = lib.mkMerge [
|
||||||
|
# --- Static Keybindings ---
|
||||||
|
{
|
||||||
|
# --- Media Keys ---
|
||||||
|
|
||||||
|
# --- Audio / Brightness ---
|
||||||
|
"XF86AudioMute" = {
|
||||||
|
allow-when-locked = true;
|
||||||
|
action = qsCall [
|
||||||
|
"audio"
|
||||||
|
"mute"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
"XF86AudioMicMute" = {
|
||||||
|
allow-when-locked = true;
|
||||||
|
action = qsCall [
|
||||||
|
"audio"
|
||||||
|
"micmute"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
"XF86AudioRaiseVolume" = {
|
||||||
|
allow-when-locked = true;
|
||||||
|
action = qsCall [
|
||||||
|
"audio"
|
||||||
|
"increment"
|
||||||
|
"5"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
"XF86AudioLowerVolume" = {
|
||||||
|
allow-when-locked = true;
|
||||||
|
action = qsCall [
|
||||||
|
"audio"
|
||||||
|
"decrement"
|
||||||
|
"5"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
"XF86MonBrightnessUp" = {
|
||||||
|
allow-when-locked = true;
|
||||||
|
action = qsCall [
|
||||||
|
"brightness"
|
||||||
|
"increment"
|
||||||
|
"5"
|
||||||
|
"amdgpu_bl1"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
"XF86MonBrightnessDown" = {
|
||||||
|
allow-when-locked = true;
|
||||||
|
action = qsCall [
|
||||||
|
"brightness"
|
||||||
|
"decrement"
|
||||||
|
"5"
|
||||||
|
"amdgpu_bl1"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
# --- System Actions ---
|
||||||
|
"Ctrl+Alt+L".action = qsCall [
|
||||||
|
"lock"
|
||||||
|
"lock"
|
||||||
|
];
|
||||||
|
"Mod+V".action = qsCall [
|
||||||
|
"clipboard"
|
||||||
|
"toggle"
|
||||||
|
];
|
||||||
|
"Mod+U".action = qsCall [
|
||||||
|
"settings"
|
||||||
|
"toggle"
|
||||||
|
];
|
||||||
|
"Mod+M".action = qsCall [
|
||||||
|
"processlist"
|
||||||
|
"toggle"
|
||||||
|
];
|
||||||
|
|
||||||
|
# --- Screenshots ---
|
||||||
|
"Print".action.screenshot-screen = {
|
||||||
|
write-to-disk = true;
|
||||||
|
};
|
||||||
|
"Mod+Shift+Alt+S".action = screenshot-window;
|
||||||
|
"Mod+Shift+S".action.screenshot = {
|
||||||
|
show-pointer = false;
|
||||||
|
};
|
||||||
|
|
||||||
|
# --- Launchers ---
|
||||||
|
"Mod+D".action = spawn (lib.getExe pkgs.fuzzel);
|
||||||
|
"Mod+Return".action = spawn (lib.getExe pkgs.alacritty);
|
||||||
|
|
||||||
|
# --- Window / Layout ---
|
||||||
|
"Mod+W".action = close-window;
|
||||||
|
"Mod+F".action = maximize-column;
|
||||||
|
|
||||||
|
# --- Navigation ---
|
||||||
|
"Mod+Left".action = focus-column-left;
|
||||||
|
"Mod+Right".action = focus-column-right;
|
||||||
|
"Mod+Down".action = focus-workspace-down;
|
||||||
|
"Mod+Up".action = focus-workspace-up;
|
||||||
|
}
|
||||||
|
|
||||||
|
# --- Dynamic Workspace Binds ---
|
||||||
|
wsBinds
|
||||||
|
];
|
||||||
|
}
|
||||||
8
modules/niri/default.nix
Normal file
8
modules/niri/default.nix
Normal file
|
|
@ -0,0 +1,8 @@
|
||||||
|
{ inputs, pkgs, ... }:
|
||||||
|
{
|
||||||
|
imports = [
|
||||||
|
./settings.nix
|
||||||
|
./binds.nix
|
||||||
|
./rules.nix
|
||||||
|
];
|
||||||
|
}
|
||||||
249
modules/niri/rules.nix
Normal file
249
modules/niri/rules.nix
Normal file
|
|
@ -0,0 +1,249 @@
|
||||||
|
_:
|
||||||
|
let
|
||||||
|
windowRules = [
|
||||||
|
{
|
||||||
|
geometry-corner-radius =
|
||||||
|
let
|
||||||
|
radius = 12.0;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
bottom-left = radius;
|
||||||
|
bottom-right = radius;
|
||||||
|
top-left = radius;
|
||||||
|
top-right = radius;
|
||||||
|
};
|
||||||
|
clip-to-geometry = true;
|
||||||
|
draw-border-with-background = false;
|
||||||
|
}
|
||||||
|
{
|
||||||
|
matches = [
|
||||||
|
{ is-floating = true; }
|
||||||
|
];
|
||||||
|
shadow.enable = true;
|
||||||
|
}
|
||||||
|
{
|
||||||
|
matches = [
|
||||||
|
{
|
||||||
|
is-window-cast-target = true;
|
||||||
|
}
|
||||||
|
];
|
||||||
|
focus-ring = {
|
||||||
|
active.color = "#f38ba8";
|
||||||
|
inactive.color = "#7d0d2d";
|
||||||
|
};
|
||||||
|
border = {
|
||||||
|
inactive.color = "#7d0d2d";
|
||||||
|
};
|
||||||
|
shadow = {
|
||||||
|
color = "#7d0d2d70";
|
||||||
|
};
|
||||||
|
tab-indicator = {
|
||||||
|
active.color = "#f38ba8";
|
||||||
|
inactive.color = "#7d0d2d";
|
||||||
|
};
|
||||||
|
}
|
||||||
|
{
|
||||||
|
matches = [{ app-id = "org.telegram.desktop"; }];
|
||||||
|
block-out-from = "screencast";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
matches = [{ app-id = "app.drey.PaperPlane"; }];
|
||||||
|
block-out-from = "screencast";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
matches = [
|
||||||
|
{ app-id = "zen"; }
|
||||||
|
{ app-id = "firefox"; }
|
||||||
|
{ app-id = "chromium-browser"; }
|
||||||
|
{ app-id = "xdg-desktop-portal-gtk"; }
|
||||||
|
];
|
||||||
|
scroll-factor = 0.5;
|
||||||
|
}
|
||||||
|
{
|
||||||
|
matches = [
|
||||||
|
{ app-id = "zen"; }
|
||||||
|
{ app-id = "firefox"; }
|
||||||
|
{ app-id = "chromium-browser"; }
|
||||||
|
{ app-id = "edge"; }
|
||||||
|
];
|
||||||
|
open-maximized = true;
|
||||||
|
}
|
||||||
|
{
|
||||||
|
matches = [
|
||||||
|
{
|
||||||
|
app-id = "firefox";
|
||||||
|
title = "Picture-in-Picture";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
open-floating = true;
|
||||||
|
default-floating-position = {
|
||||||
|
x = 32;
|
||||||
|
y = 32;
|
||||||
|
relative-to = "bottom-right";
|
||||||
|
};
|
||||||
|
default-column-width = {
|
||||||
|
fixed = 480;
|
||||||
|
};
|
||||||
|
default-window-height = {
|
||||||
|
fixed = 270;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
{
|
||||||
|
matches = [
|
||||||
|
{
|
||||||
|
app-id = "zen";
|
||||||
|
title = "Picture-in-Picture";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
open-floating = true;
|
||||||
|
default-floating-position = {
|
||||||
|
x = 32;
|
||||||
|
y = 32;
|
||||||
|
relative-to = "bottom-right";
|
||||||
|
};
|
||||||
|
default-column-width = {
|
||||||
|
fixed = 480;
|
||||||
|
};
|
||||||
|
default-window-height = {
|
||||||
|
fixed = 270;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
{
|
||||||
|
matches = [{ title = "Picture in picture"; }];
|
||||||
|
open-floating = true;
|
||||||
|
default-floating-position = {
|
||||||
|
x = 32;
|
||||||
|
y = 32;
|
||||||
|
relative-to = "bottom-right";
|
||||||
|
};
|
||||||
|
}
|
||||||
|
{
|
||||||
|
matches = [{ title = "Discord Popout"; }];
|
||||||
|
open-floating = true;
|
||||||
|
default-floating-position = {
|
||||||
|
x = 32;
|
||||||
|
y = 32;
|
||||||
|
relative-to = "bottom-right";
|
||||||
|
};
|
||||||
|
}
|
||||||
|
{
|
||||||
|
matches = [{ app-id = "pavucontrol"; }];
|
||||||
|
open-floating = true;
|
||||||
|
}
|
||||||
|
{
|
||||||
|
matches = [{ app-id = "pavucontrol-qt"; }];
|
||||||
|
open-floating = true;
|
||||||
|
}
|
||||||
|
{
|
||||||
|
matches = [{ app-id = "com.saivert.pwvucontrol"; }];
|
||||||
|
open-floating = true;
|
||||||
|
}
|
||||||
|
{
|
||||||
|
matches = [{ app-id = "io.github.fsobolev.Cavalier"; }];
|
||||||
|
open-floating = true;
|
||||||
|
}
|
||||||
|
{
|
||||||
|
matches = [{ app-id = "dialog"; }];
|
||||||
|
open-floating = true;
|
||||||
|
}
|
||||||
|
{
|
||||||
|
matches = [{ app-id = "popup"; }];
|
||||||
|
open-floating = true;
|
||||||
|
}
|
||||||
|
{
|
||||||
|
matches = [{ app-id = "task_dialog"; }];
|
||||||
|
open-floating = true;
|
||||||
|
}
|
||||||
|
{
|
||||||
|
matches = [{ app-id = "gcr-prompter"; }];
|
||||||
|
open-floating = true;
|
||||||
|
}
|
||||||
|
{
|
||||||
|
matches = [{ app-id = "file-roller"; }];
|
||||||
|
open-floating = true;
|
||||||
|
}
|
||||||
|
{
|
||||||
|
matches = [{ app-id = "org.gnome.FileRoller"; }];
|
||||||
|
open-floating = true;
|
||||||
|
}
|
||||||
|
{
|
||||||
|
matches = [{ app-id = "nm-connection-editor"; }];
|
||||||
|
open-floating = true;
|
||||||
|
}
|
||||||
|
{
|
||||||
|
matches = [{ app-id = "blueman-manager"; }];
|
||||||
|
open-floating = true;
|
||||||
|
}
|
||||||
|
{
|
||||||
|
matches = [{ app-id = "xdg-desktop-portal-gtk"; }];
|
||||||
|
open-floating = true;
|
||||||
|
}
|
||||||
|
{
|
||||||
|
matches = [{ app-id = "org.kde.polkit-kde-authentication-agent-1"; }];
|
||||||
|
open-floating = true;
|
||||||
|
}
|
||||||
|
{
|
||||||
|
matches = [{ app-id = "pinentry"; }];
|
||||||
|
open-floating = true;
|
||||||
|
}
|
||||||
|
{
|
||||||
|
matches = [{ title = "Progress"; }];
|
||||||
|
open-floating = true;
|
||||||
|
}
|
||||||
|
{
|
||||||
|
matches = [{ title = "File Operations"; }];
|
||||||
|
open-floating = true;
|
||||||
|
}
|
||||||
|
{
|
||||||
|
matches = [{ title = "Copying"; }];
|
||||||
|
open-floating = true;
|
||||||
|
}
|
||||||
|
{
|
||||||
|
matches = [{ title = "Moving"; }];
|
||||||
|
open-floating = true;
|
||||||
|
}
|
||||||
|
{
|
||||||
|
matches = [{ title = "Properties"; }];
|
||||||
|
open-floating = true;
|
||||||
|
}
|
||||||
|
{
|
||||||
|
matches = [{ title = "Downloads"; }];
|
||||||
|
open-floating = true;
|
||||||
|
}
|
||||||
|
{
|
||||||
|
matches = [{ title = "file progress"; }];
|
||||||
|
open-floating = true;
|
||||||
|
}
|
||||||
|
{
|
||||||
|
matches = [{ title = "Confirm"; }];
|
||||||
|
open-floating = true;
|
||||||
|
}
|
||||||
|
{
|
||||||
|
matches = [{ title = "Authentication Required"; }];
|
||||||
|
open-floating = true;
|
||||||
|
}
|
||||||
|
{
|
||||||
|
matches = [{ title = "Notice"; }];
|
||||||
|
open-floating = true;
|
||||||
|
}
|
||||||
|
{
|
||||||
|
matches = [{ title = "Warning"; }];
|
||||||
|
open-floating = true;
|
||||||
|
}
|
||||||
|
{
|
||||||
|
matches = [{ title = "Error"; }];
|
||||||
|
open-floating = true;
|
||||||
|
}
|
||||||
|
];
|
||||||
|
in
|
||||||
|
{
|
||||||
|
programs.niri.settings = {
|
||||||
|
window-rules = windowRules;
|
||||||
|
layer-rules = [
|
||||||
|
{
|
||||||
|
matches = [{ namespace = "^swww$"; }];
|
||||||
|
place-within-backdrop = true;
|
||||||
|
}
|
||||||
|
];
|
||||||
|
};
|
||||||
|
}
|
||||||
135
modules/niri/settings.nix
Normal file
135
modules/niri/settings.nix
Normal file
|
|
@ -0,0 +1,135 @@
|
||||||
|
{ config
|
||||||
|
, lib
|
||||||
|
, pkgs
|
||||||
|
, ...
|
||||||
|
}:
|
||||||
|
let
|
||||||
|
makeCommand = command: {
|
||||||
|
command = [ command ];
|
||||||
|
};
|
||||||
|
qs = "${pkgs.quickshell}/bin/qs";
|
||||||
|
wl-paste = "${pkgs.wl-clipboard}/bin/wl-paste";
|
||||||
|
in
|
||||||
|
{
|
||||||
|
programs.niri.settings = {
|
||||||
|
environment = {
|
||||||
|
CLUTTER_BACKEND = "wayland";
|
||||||
|
DISPLAY = ":0";
|
||||||
|
GDK_BACKEND = "wayland,x11";
|
||||||
|
MOZ_ENABLE_WAYLAND = "1";
|
||||||
|
NIXOS_OZONE_WL = "1";
|
||||||
|
QT_QPA_PLATFORM = "wayland;xcb";
|
||||||
|
QT_WAYLAND_DISABLE_WINDOWDECORATION = "1";
|
||||||
|
SDL_VIDEODRIVER = "wayland";
|
||||||
|
};
|
||||||
|
spawn-at-startup = [
|
||||||
|
(makeCommand "${lib.getExe pkgs.hyprlock}")
|
||||||
|
(makeCommand "${pkgs.swww}/bin/swww-daemon")
|
||||||
|
{
|
||||||
|
command = [
|
||||||
|
"${wl-paste}"
|
||||||
|
"--watch"
|
||||||
|
"cliphist"
|
||||||
|
"store"
|
||||||
|
];
|
||||||
|
}
|
||||||
|
{
|
||||||
|
command = [
|
||||||
|
"${wl-paste}"
|
||||||
|
"--type text"
|
||||||
|
"--watch"
|
||||||
|
"cliphist"
|
||||||
|
"store"
|
||||||
|
];
|
||||||
|
}
|
||||||
|
{
|
||||||
|
command = [
|
||||||
|
"${qs}"
|
||||||
|
"-c"
|
||||||
|
"DankMaterialShell"
|
||||||
|
];
|
||||||
|
}
|
||||||
|
];
|
||||||
|
|
||||||
|
input = {
|
||||||
|
touchpad = {
|
||||||
|
click-method = "button-areas";
|
||||||
|
dwt = true;
|
||||||
|
dwtp = true;
|
||||||
|
natural-scroll = true;
|
||||||
|
scroll-method = "two-finger";
|
||||||
|
tap = true;
|
||||||
|
tap-button-map = "left-right-middle";
|
||||||
|
middle-emulation = true;
|
||||||
|
accel-profile = "adaptive";
|
||||||
|
};
|
||||||
|
focus-follows-mouse = {
|
||||||
|
enable = true;
|
||||||
|
max-scroll-amount = "90%";
|
||||||
|
};
|
||||||
|
warp-mouse-to-focus.enable = true;
|
||||||
|
workspace-auto-back-and-forth = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
outputs = {
|
||||||
|
"eDP-1" = {
|
||||||
|
scale = 1.0;
|
||||||
|
position = {
|
||||||
|
x = 0;
|
||||||
|
y = 0;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
overview = {
|
||||||
|
workspace-shadow.enable = false;
|
||||||
|
backdrop-color = "transparent";
|
||||||
|
};
|
||||||
|
gestures = {
|
||||||
|
hot-corners.enable = true;
|
||||||
|
};
|
||||||
|
layout = {
|
||||||
|
focus-ring.enable = false;
|
||||||
|
border = {
|
||||||
|
enable = true;
|
||||||
|
width = 2;
|
||||||
|
#active.color = "#${base0D}";
|
||||||
|
#inactive.color = "#${base07}";
|
||||||
|
};
|
||||||
|
shadow = {
|
||||||
|
enable = false;
|
||||||
|
};
|
||||||
|
preset-column-widths = [
|
||||||
|
{ proportion = 0.25; }
|
||||||
|
{ proportion = 0.5; }
|
||||||
|
{ proportion = 0.75; }
|
||||||
|
{ proportion = 1.0; }
|
||||||
|
];
|
||||||
|
default-column-width = {
|
||||||
|
proportion = 0.5;
|
||||||
|
};
|
||||||
|
|
||||||
|
gaps = 6;
|
||||||
|
struts = {
|
||||||
|
left = 0;
|
||||||
|
right = 0;
|
||||||
|
top = 0;
|
||||||
|
bottom = 0;
|
||||||
|
};
|
||||||
|
|
||||||
|
tab-indicator = {
|
||||||
|
hide-when-single-tab = true;
|
||||||
|
place-within-column = true;
|
||||||
|
position = "left";
|
||||||
|
corner-radius = 20.0;
|
||||||
|
gap = -12.0;
|
||||||
|
gaps-between-tabs = 10.0;
|
||||||
|
width = 4.0;
|
||||||
|
length.total-proportion = 0.1;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
prefer-no-csd = true;
|
||||||
|
hotkey-overlay.skip-at-startup = true;
|
||||||
|
};
|
||||||
|
}
|
||||||
8
modules/nix.nix
Normal file
8
modules/nix.nix
Normal file
|
|
@ -0,0 +1,8 @@
|
||||||
|
{ ... }: {
|
||||||
|
nix.settings = {
|
||||||
|
experimental-features = [ "nix-command" "flakes" ];
|
||||||
|
|
||||||
|
substituters = [ "https://nix-gaming.cachix.org" ];
|
||||||
|
trusted-public-keys = [ "nix-gaming.cachix.org-1:nbjlureqMbRAxR1gJ/f3hxemL9svXaZF/Ees8vCUUs4=" ];
|
||||||
|
};
|
||||||
|
}
|
||||||
113
modules/nushell.nix
Normal file
113
modules/nushell.nix
Normal file
|
|
@ -0,0 +1,113 @@
|
||||||
|
{ lib, pkgs, ... }: {
|
||||||
|
programs = {
|
||||||
|
nushell = {
|
||||||
|
enable = true;
|
||||||
|
# The config.nu can be anywhere you want if you like to edit your Nushell with Nu
|
||||||
|
#configFile.source = ./.../config.nu;
|
||||||
|
# for editing directly to config.nu
|
||||||
|
extraConfig = ''
|
||||||
|
# Common ls aliases and sort them by type and then name
|
||||||
|
# Inspired by https://github.com/nushell/nushell/issues/7190
|
||||||
|
def lla [...args] { ls -la ...(if $args == [] {["."]} else {$args}) | sort-by type name -i }
|
||||||
|
def la [...args] { ls -a ...(if $args == [] {["."]} else {$args}) | sort-by type name -i }
|
||||||
|
def ll [...args] { ls -l ...(if $args == [] {["."]} else {$args}) | sort-by type name -i }
|
||||||
|
def l [...args] { ls ...(if $args == [] {["."]} else {$args}) | sort-by type name -i }
|
||||||
|
|
||||||
|
# Completions
|
||||||
|
# mainly pieced together from https://www.nushell.sh/cookbook/external_completers.html
|
||||||
|
|
||||||
|
# carapce completions https://www.nushell.sh/cookbook/external_completers.html#carapace-completer
|
||||||
|
# + fix https://www.nushell.sh/cookbook/external_completers.html#err-unknown-shorthand-flag-using-carapace
|
||||||
|
# enable the package and integration bellow
|
||||||
|
let carapace_completer = {|spans: list<string>|
|
||||||
|
carapace $spans.0 nushell ...$spans
|
||||||
|
| from json
|
||||||
|
| if ($in | default [] | where value == $"($spans | last)ERR" | is-empty) { $in } else { null }
|
||||||
|
}
|
||||||
|
# some completions are only available through a bridge
|
||||||
|
# eg. tailscale
|
||||||
|
# https://carapace-sh.github.io/carapace-bin/setup.html#nushell
|
||||||
|
$env.CARAPACE_BRIDGES = 'zsh,fish,bash,inshellisense'
|
||||||
|
|
||||||
|
# fish completions https://www.nushell.sh/cookbook/external_completers.html#fish-completer
|
||||||
|
let fish_completer = {|spans|
|
||||||
|
${
|
||||||
|
lib.getExe pkgs.fish
|
||||||
|
} --command $'complete "--do-complete=($spans | str join " ")"'
|
||||||
|
| $"value(char tab)description(char newline)" + $in
|
||||||
|
| from tsv --flexible --no-infer
|
||||||
|
}
|
||||||
|
|
||||||
|
# zoxide completions https://www.nushell.sh/cookbook/external_completers.html#zoxide-completer
|
||||||
|
let zoxide_completer = {|spans|
|
||||||
|
$spans | skip 1 | zoxide query -l ...$in | lines | where {|x| $x != $env.PWD}
|
||||||
|
}
|
||||||
|
|
||||||
|
# multiple completions
|
||||||
|
# the default will be carapace, but you can also switch to fish
|
||||||
|
# https://www.nushell.sh/cookbook/external_completers.html#alias-completions
|
||||||
|
let multiple_completers = {|spans|
|
||||||
|
## alias fixer start https://www.nushell.sh/cookbook/external_completers.html#alias-completions
|
||||||
|
let expanded_alias = scope aliases
|
||||||
|
| where name == $spans.0
|
||||||
|
| get -i 0.expansion
|
||||||
|
|
||||||
|
let spans = if $expanded_alias != null {
|
||||||
|
$spans
|
||||||
|
| skip 1
|
||||||
|
| prepend ($expanded_alias | split row ' ' | take 1)
|
||||||
|
} else {
|
||||||
|
$spans
|
||||||
|
}
|
||||||
|
## alias fixer end
|
||||||
|
|
||||||
|
match $spans.0 {
|
||||||
|
__zoxide_z | __zoxide_zi => $zoxide_completer
|
||||||
|
_ => $carapace_completer
|
||||||
|
} | do $in $spans
|
||||||
|
}
|
||||||
|
|
||||||
|
$env.config = {
|
||||||
|
show_banner: false,
|
||||||
|
completions: {
|
||||||
|
case_sensitive: false # case-sensitive completions
|
||||||
|
quick: true # set to false to prevent auto-selecting completions
|
||||||
|
partial: true # set to false to prevent partial filling of the prompt
|
||||||
|
algorithm: "fuzzy" # prefix or fuzzy
|
||||||
|
external: {
|
||||||
|
# set to false to prevent nushell looking into $env.PATH to find more suggestions
|
||||||
|
enable: true
|
||||||
|
# set to lower can improve completion performance at the cost of omitting some options
|
||||||
|
max_results: 100
|
||||||
|
completer: $multiple_completers
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
$env.PATH = ($env.PATH |
|
||||||
|
split row (char esep) |
|
||||||
|
prepend /home/myuser/.apps |
|
||||||
|
append /usr/bin/env
|
||||||
|
)
|
||||||
|
'';
|
||||||
|
|
||||||
|
shellAliases = {
|
||||||
|
fg = "job unfreeze";
|
||||||
|
nano = "hx";
|
||||||
|
vi = "hx";
|
||||||
|
nvim = "hx";
|
||||||
|
vim = "hx";
|
||||||
|
devenv-init = "nix flake init --template github:cachix/devenv";
|
||||||
|
devenv-enter = "nix develop --impure";
|
||||||
|
rust-init = "nix flake init --template templates#rust";
|
||||||
|
c-init = "nix flake init --template templates#c-hello";
|
||||||
|
go-hello = "nix flake init --template templates#go-hello";
|
||||||
|
haskell-hello = "nix flake init --template templates#haskell-hello";
|
||||||
|
neofetch = "hyfetch";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
carapace.enable = true;
|
||||||
|
carapace.enableNushellIntegration = true;
|
||||||
|
|
||||||
|
starship = { enable = true; };
|
||||||
|
};
|
||||||
|
}
|
||||||
37
modules/quickshell.nix
Normal file
37
modules/quickshell.nix
Normal file
|
|
@ -0,0 +1,37 @@
|
||||||
|
{
|
||||||
|
pkgs,
|
||||||
|
inputs,
|
||||||
|
lib,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
let
|
||||||
|
quickshell = inputs.quickshell.packages.${pkgs.system}.default;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
home.packages =
|
||||||
|
with pkgs;
|
||||||
|
[
|
||||||
|
quickshell
|
||||||
|
]
|
||||||
|
++ [
|
||||||
|
inputs.mynixpkgs.packages.${pkgs.system}.dgop
|
||||||
|
accountsservice
|
||||||
|
brightnessctl
|
||||||
|
cava
|
||||||
|
cliphist
|
||||||
|
ddcutil
|
||||||
|
kdePackages.qt6ct
|
||||||
|
khal
|
||||||
|
material-symbols
|
||||||
|
matugen
|
||||||
|
swww
|
||||||
|
wl-clipboard
|
||||||
|
glib
|
||||||
|
];
|
||||||
|
|
||||||
|
home.sessionVariables.QML2_IMPORT_PATH = lib.concatStringsSep ":" [
|
||||||
|
"${quickshell}/lib/qt-6/qml"
|
||||||
|
"${pkgs.kdePackages.qtdeclarative}/lib/qt-6/qml"
|
||||||
|
"${pkgs.kdePackages.kirigami.unwrapped}/lib/qt-6/qml"
|
||||||
|
];
|
||||||
|
}
|
||||||
4
modules/waybar.nix
Normal file
4
modules/waybar.nix
Normal file
|
|
@ -0,0 +1,4 @@
|
||||||
|
{ ... }:
|
||||||
|
{
|
||||||
|
programs.waybar.enable = true;
|
||||||
|
}
|
||||||
18
persist.nix
Normal file
18
persist.nix
Normal file
|
|
@ -0,0 +1,18 @@
|
||||||
|
{ ... }: {
|
||||||
|
# machine-id is used by systemd for the journal, if you don't
|
||||||
|
# persist this file you won't be able to easily use journalctl to
|
||||||
|
# look at journals for previous boots.
|
||||||
|
environment.etc."machine-id".source = "/nix/persist/etc/machine-id";
|
||||||
|
|
||||||
|
|
||||||
|
# if you want to run an openssh daemon, you may want to store the
|
||||||
|
# host keys across reboots.
|
||||||
|
#
|
||||||
|
# For this to work you will need to create the directory yourself:
|
||||||
|
# $ mkdir /nix/persist/etc/ssh
|
||||||
|
environment.etc."ssh/ssh_host_rsa_key".source = "/nix/persist/etc/ssh/ssh_host_rsa_key";
|
||||||
|
environment.etc."ssh/ssh_host_rsa_key.pub".source = "/nix/persist/etc/ssh/ssh_host_rsa_key.pub";
|
||||||
|
environment.etc."ssh/ssh_host_ed25519_key".source = "/nix/persist/etc/ssh/ssh_host_ed25519_key";
|
||||||
|
environment.etc."ssh/ssh_host_ed25519_key.pub".source = "/nix/persist/etc/ssh/ssh_host_ed25519_key.pub";
|
||||||
|
|
||||||
|
}
|
||||||
Loading…
Add table
Add a link
Reference in a new issue