add current system config

This commit is contained in:
Adithya 2023-03-15 22:11:59 +05:30
parent 0f01f958c2
commit 69577756e5
No known key found for this signature in database
GPG key ID: 0C7F35F4F821290F
48 changed files with 2427 additions and 0 deletions

539
flake.lock Normal file
View file

@ -0,0 +1,539 @@
{
"nodes": {
"crane": {
"inputs": {
"flake-compat": "flake-compat_2",
"flake-utils": [
"lanzaboote",
"flake-utils"
],
"nixpkgs": [
"lanzaboote",
"nixpkgs"
],
"rust-overlay": [
"lanzaboote",
"rust-overlay"
]
},
"locked": {
"lastModified": 1673056065,
"narHash": "sha256-a68tMDTDqdAauxq377ALl4Uwm6oh9MeoY2WbTYRWZoo=",
"owner": "ipetkov",
"repo": "crane",
"rev": "0144134311767fcee80213321f079a8ffa0b9cc1",
"type": "github"
},
"original": {
"owner": "ipetkov",
"repo": "crane",
"type": "github"
}
},
"devenv": {
"inputs": {
"flake-compat": "flake-compat",
"nix": "nix",
"nixpkgs": "nixpkgs",
"pre-commit-hooks": "pre-commit-hooks"
},
"locked": {
"lastModified": 1678113758,
"narHash": "sha256-mD3SkN43b1s5CJ8Rx3l2oK3Dqgs+6Ze0FfWrdMcrrYk=",
"owner": "cachix",
"repo": "devenv",
"rev": "6455f319fc90e0be2071327093c5458f9afc61bf",
"type": "github"
},
"original": {
"owner": "cachix",
"ref": "latest",
"repo": "devenv",
"type": "github"
}
},
"flake-compat": {
"flake": false,
"locked": {
"lastModified": 1673956053,
"narHash": "sha256-4gtG9iQuiKITOjNQQeQIpoIB6b16fm+504Ch3sNKLd8=",
"owner": "edolstra",
"repo": "flake-compat",
"rev": "35bb57c0c8d8b62bbfd284272c928ceb64ddbde9",
"type": "github"
},
"original": {
"owner": "edolstra",
"repo": "flake-compat",
"type": "github"
}
},
"flake-compat_2": {
"flake": false,
"locked": {
"lastModified": 1668681692,
"narHash": "sha256-Ht91NGdewz8IQLtWZ9LCeNXMSXHUss+9COoqu6JLmXU=",
"owner": "edolstra",
"repo": "flake-compat",
"rev": "009399224d5e398d03b22badca40a37ac85412a1",
"type": "github"
},
"original": {
"owner": "edolstra",
"repo": "flake-compat",
"type": "github"
}
},
"flake-compat_3": {
"flake": false,
"locked": {
"lastModified": 1668681692,
"narHash": "sha256-Ht91NGdewz8IQLtWZ9LCeNXMSXHUss+9COoqu6JLmXU=",
"owner": "edolstra",
"repo": "flake-compat",
"rev": "009399224d5e398d03b22badca40a37ac85412a1",
"type": "github"
},
"original": {
"owner": "edolstra",
"repo": "flake-compat",
"type": "github"
}
},
"flake-compat_4": {
"flake": false,
"locked": {
"lastModified": 1668681692,
"narHash": "sha256-Ht91NGdewz8IQLtWZ9LCeNXMSXHUss+9COoqu6JLmXU=",
"owner": "edolstra",
"repo": "flake-compat",
"rev": "009399224d5e398d03b22badca40a37ac85412a1",
"type": "github"
},
"original": {
"owner": "edolstra",
"repo": "flake-compat",
"type": "github"
}
},
"flake-parts": {
"inputs": {
"nixpkgs-lib": "nixpkgs-lib"
},
"locked": {
"lastModified": 1673047662,
"narHash": "sha256-dXYxH/0Ea5oQSkGAWWNy7HzmFutguycDGn2dt6lTYRQ=",
"owner": "hercules-ci",
"repo": "flake-parts",
"rev": "aa1f6ca773b6e740037ebfb35f7010e0c3960638",
"type": "github"
},
"original": {
"owner": "hercules-ci",
"repo": "flake-parts",
"type": "github"
}
},
"flake-utils": {
"locked": {
"lastModified": 1667395993,
"narHash": "sha256-nuEHfE/LcWyuSWnS8t12N1wc105Qtau+/OdUAjtQ0rA=",
"owner": "numtide",
"repo": "flake-utils",
"rev": "5aed5285a952e0b949eb3ba02c12fa4fcfef535f",
"type": "github"
},
"original": {
"owner": "numtide",
"repo": "flake-utils",
"type": "github"
}
},
"flake-utils_2": {
"locked": {
"lastModified": 1667395993,
"narHash": "sha256-nuEHfE/LcWyuSWnS8t12N1wc105Qtau+/OdUAjtQ0rA=",
"owner": "numtide",
"repo": "flake-utils",
"rev": "5aed5285a952e0b949eb3ba02c12fa4fcfef535f",
"type": "github"
},
"original": {
"owner": "numtide",
"repo": "flake-utils",
"type": "github"
}
},
"gitignore": {
"inputs": {
"nixpkgs": [
"devenv",
"pre-commit-hooks",
"nixpkgs"
]
},
"locked": {
"lastModified": 1660459072,
"narHash": "sha256-8DFJjXG8zqoONA1vXtgeKXy68KdJL5UaXR8NtVMUbx8=",
"owner": "hercules-ci",
"repo": "gitignore.nix",
"rev": "a20de23b925fd8264fd7fad6454652e142fd7f73",
"type": "github"
},
"original": {
"owner": "hercules-ci",
"repo": "gitignore.nix",
"type": "github"
}
},
"gitignore_2": {
"inputs": {
"nixpkgs": [
"lanzaboote",
"pre-commit-hooks-nix",
"nixpkgs"
]
},
"locked": {
"lastModified": 1660459072,
"narHash": "sha256-8DFJjXG8zqoONA1vXtgeKXy68KdJL5UaXR8NtVMUbx8=",
"owner": "hercules-ci",
"repo": "gitignore.nix",
"rev": "a20de23b925fd8264fd7fad6454652e142fd7f73",
"type": "github"
},
"original": {
"owner": "hercules-ci",
"repo": "gitignore.nix",
"type": "github"
}
},
"home-manager": {
"inputs": {
"nixpkgs": [
"nixpkgs"
],
"utils": "utils"
},
"locked": {
"lastModified": 1678881218,
"narHash": "sha256-ZiKspOZ9MpwHRXJRxagjtT4WdN3xL0lno7J/c0cXeCk=",
"owner": "nix-community",
"repo": "home-manager",
"rev": "85196310e1aceb1d91ff4fb5ac5cd6e1f630a66a",
"type": "github"
},
"original": {
"owner": "nix-community",
"ref": "master",
"repo": "home-manager",
"type": "github"
}
},
"impermanence": {
"locked": {
"lastModified": 1675359654,
"narHash": "sha256-FPxzuvJkcO49g4zkWLSeuZkln54bLoTtrggZDJBH90I=",
"owner": "nix-community",
"repo": "impermanence",
"rev": "6138eb8e737bffabd4c8fc78ae015d4fd6a7e2fd",
"type": "github"
},
"original": {
"owner": "nix-community",
"ref": "master",
"repo": "impermanence",
"type": "github"
}
},
"lanzaboote": {
"inputs": {
"crane": "crane",
"flake-compat": "flake-compat_3",
"flake-parts": "flake-parts",
"flake-utils": "flake-utils_2",
"nixpkgs": [
"nixpkgs"
],
"nixpkgs-test": "nixpkgs-test",
"pre-commit-hooks-nix": "pre-commit-hooks-nix",
"rust-overlay": "rust-overlay"
},
"locked": {
"lastModified": 1678750306,
"narHash": "sha256-su+fOHbn84IWoOVxNTEhMF3RBdf9Yy5BPbMsgRajdD0=",
"owner": "nix-community",
"repo": "lanzaboote",
"rev": "8aad4af5ad0654c239a0c54179a01c48f310035b",
"type": "github"
},
"original": {
"owner": "nix-community",
"ref": "master",
"repo": "lanzaboote",
"type": "github"
}
},
"lowdown-src": {
"flake": false,
"locked": {
"lastModified": 1633514407,
"narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=",
"owner": "kristapsdz",
"repo": "lowdown",
"rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8",
"type": "github"
},
"original": {
"owner": "kristapsdz",
"repo": "lowdown",
"type": "github"
}
},
"nix": {
"inputs": {
"lowdown-src": "lowdown-src",
"nixpkgs": [
"devenv",
"nixpkgs"
],
"nixpkgs-regression": "nixpkgs-regression"
},
"locked": {
"lastModified": 1676545802,
"narHash": "sha256-EK4rZ+Hd5hsvXnzSzk2ikhStJnD63odF7SzsQ8CuSPU=",
"owner": "domenkozar",
"repo": "nix",
"rev": "7c91803598ffbcfe4a55c44ac6d49b2cf07a527f",
"type": "github"
},
"original": {
"owner": "domenkozar",
"ref": "relaxed-flakes",
"repo": "nix",
"type": "github"
}
},
"nixpkgs": {
"locked": {
"lastModified": 1678815914,
"narHash": "sha256-LveHTkKxFjX3OkxIr13KWv3iRyMbnNU4GX1r1fLBTyA=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "d1d7c60984649992cecd884d3576dc45363e8895",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixpkgs-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs-lib": {
"locked": {
"dir": "lib",
"lastModified": 1672350804,
"narHash": "sha256-jo6zkiCabUBn3ObuKXHGqqORUMH27gYDIFFfLq5P4wg=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "677ed08a50931e38382dbef01cba08a8f7eac8f6",
"type": "github"
},
"original": {
"dir": "lib",
"owner": "NixOS",
"ref": "nixos-unstable",
"repo": "nixpkgs",
"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": 1673800717,
"narHash": "sha256-SFHraUqLSu5cC6IxTprex/nTsI81ZQAtDvlBvGDWfnA=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "2f9fd351ec37f5d479556cd48be4ca340da59b8f",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixos-22.11",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs-stable_2": {
"locked": {
"lastModified": 1671271954,
"narHash": "sha256-cSvu+bnvN08sOlTBWbBrKaBHQZq8mvk8bgpt0ZJ2Snc=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "d513b448cc2a6da2c8803e3c197c9fc7e67b19e3",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixos-22.05",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs-test": {
"locked": {
"lastModified": 1671812130,
"narHash": "sha256-GALBK+qB9rhnB+lVnxdgtMoXCySXughZZ3+qGO1Ke/k=",
"owner": "RaitoBezarius",
"repo": "nixpkgs",
"rev": "e51bf8cc8e2c75192e930ad83ed272938729e7be",
"type": "github"
},
"original": {
"owner": "RaitoBezarius",
"ref": "simplified-qemu-boot-disks",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs_2": {
"locked": {
"lastModified": 1678654296,
"narHash": "sha256-aVfw3ThpY7vkUeF1rFy10NAkpKDS2imj3IakrzT0Occ=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "5a1dc8acd977ff3dccd1328b7c4a6995429a656b",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixos-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"pre-commit-hooks": {
"inputs": {
"flake-compat": [
"devenv",
"flake-compat"
],
"flake-utils": "flake-utils",
"gitignore": "gitignore",
"nixpkgs": [
"devenv",
"nixpkgs"
],
"nixpkgs-stable": "nixpkgs-stable"
},
"locked": {
"lastModified": 1677160285,
"narHash": "sha256-tBzpCjMP+P3Y3nKLYvdBkXBg3KvTMo3gvi8tLQaqXVY=",
"owner": "cachix",
"repo": "pre-commit-hooks.nix",
"rev": "2bd861ab81469428d9c823ef72c4bb08372dd2c4",
"type": "github"
},
"original": {
"owner": "cachix",
"repo": "pre-commit-hooks.nix",
"type": "github"
}
},
"pre-commit-hooks-nix": {
"inputs": {
"flake-compat": "flake-compat_4",
"flake-utils": [
"lanzaboote",
"flake-utils"
],
"gitignore": "gitignore_2",
"nixpkgs": [
"lanzaboote",
"nixpkgs"
],
"nixpkgs-stable": "nixpkgs-stable_2"
},
"locked": {
"lastModified": 1672912243,
"narHash": "sha256-QnQeKUjco2kO9J4rBqIBPp5XcOMblIMnmyhpjeaJBYc=",
"owner": "cachix",
"repo": "pre-commit-hooks.nix",
"rev": "a4548c09eac4afb592ab2614f4a150120b29584c",
"type": "github"
},
"original": {
"owner": "cachix",
"repo": "pre-commit-hooks.nix",
"type": "github"
}
},
"root": {
"inputs": {
"devenv": "devenv",
"home-manager": "home-manager",
"impermanence": "impermanence",
"lanzaboote": "lanzaboote",
"nixpkgs": "nixpkgs_2"
}
},
"rust-overlay": {
"inputs": {
"flake-utils": [
"lanzaboote",
"flake-utils"
],
"nixpkgs": [
"lanzaboote",
"nixpkgs"
]
},
"locked": {
"lastModified": 1673058265,
"narHash": "sha256-FFigGHIO9BQeIIKjH5dcpB+ey5CSgfy47wHPGeOhCps=",
"owner": "oxalica",
"repo": "rust-overlay",
"rev": "802ff3314663ec7114f29a6e8b200dfc892023f8",
"type": "github"
},
"original": {
"owner": "oxalica",
"repo": "rust-overlay",
"type": "github"
}
},
"utils": {
"locked": {
"lastModified": 1676283394,
"narHash": "sha256-XX2f9c3iySLCw54rJ/CZs+ZK6IQy7GXNY4nSOyu2QG4=",
"owner": "numtide",
"repo": "flake-utils",
"rev": "3db36a8b464d0c4532ba1c7dda728f4576d6d073",
"type": "github"
},
"original": {
"owner": "numtide",
"repo": "flake-utils",
"type": "github"
}
}
},
"root": "root",
"version": 7
}

56
flake.nix Normal file
View file

@ -0,0 +1,56 @@
{
inputs = {
nixpkgs = {
url = "github:NixOS/nixpkgs/nixos-unstable";
};
lanzaboote = {
url = "github:nix-community/lanzaboote/master";
inputs.nixpkgs.follows = "nixpkgs";
};
impermanence = {
url = "github:nix-community/impermanence/master";
};
home-manager = {
url = "github:nix-community/home-manager/master";
inputs.nixpkgs.follows = "nixpkgs";
};
devenv = {
url = "github:cachix/devenv/latest";
};
};
outputs = { self, devenv, nixpkgs, home-manager, impermanence, lanzaboote }@inputs: {
nixosConfigurations = {
Skipper = nixpkgs.lib.nixosSystem rec {
system = "x86_64-linux";
specialArgs = {
inherit devenv impermanence system;
};
modules = [
./system/nix.nix
{
nixpkgs.overlays = [
(import ./packages) # Overlay adding all custom packages
(self: super: { devenv = devenv.packages.${system}.devenv; }) # Overlay for devenv.sh
];
}
{ system.configurationRevision = nixpkgs.lib.mkIf (self ? rev) self.rev; }
home-manager.nixosModules.home-manager
impermanence.nixosModules.impermanence
lanzaboote.nixosModules.lanzaboote
./system
./users
./home
];
};
};
};
}

73
home/default.nix Normal file
View file

@ -0,0 +1,73 @@
{ impermanence, pkgs, ... }:
let
user = import ../users/user.nix;
in
{
programs.fuse.userAllowOther = true;
fileSystems."/home/${user.primary.userName}" = {
device = "tmpfs";
fsType = "tmpfs";
options = [ "mode=0755" "uid=1000" "gid=100" ];
};
home-manager.useUserPackages = true;
home-manager.useGlobalPkgs = true;
home-manager.users.${user.primary.userName} = { pkgs, ... }: {
imports = [
impermanence.nixosModules.home-manager.impermanence
./dev.nix
./downloader.nix
./firefox.nix
./media.nix
./persistence.nix
./scripts.nix
./sway
./terminal.nix
./virt-manager.nix
];
home.packages = with pkgs; [
_1password-gui
brightnessctl
discord
evince
gnome.eog
gnome.gnome-system-monitor
gnome3.gnome-disk-utility
libsecret
pantheon.elementary-files
pavucontrol
xdg-utils
];
dconf.settings = {
"io/elementary/files/preferences" = {
"singleclick-select" = true;
};
"org/gtk/settings/file-chooser" = {
"sort-directories-first" = true;
};
};
programs = {
gpg = {
enable = true;
settings = {
keyserver = "hkps://keys.openpgp.org";
};
};
};
services.blueman-applet.enable = true;
xdg.enable = true;
xdg.mime.enable = true;
xdg.mimeApps.enable = true;
xdg.userDirs.enable = true;
home.stateVersion = "23.05";
};
}

43
home/dev.nix Normal file
View file

@ -0,0 +1,43 @@
{ pkgs, ... }:
let
user = import ../users/user.nix;
in
{
imports = [
./nvim.nix
];
home.packages = with pkgs; [
devenv
git-crypt
lazydocker
nixpkgs-fmt
ripgrep
];
programs = {
gh = {
enable = true;
settings.git_protocol = "ssh";
extensions = [ pkgs.gh-dash ];
};
git = {
enable = true;
diff-so-fancy = {
enable = true;
};
userEmail = user.primary.emailAddress;
userName = user.primary.realName;
signing = {
key = user.primary.signingKey;
signByDefault = true;
};
extraConfig = {
init.defaultBranch = "main";
};
ignores = [ "/.nix" "/.direnv" ];
};
lazygit = {
enable = true;
};
};
}

20
home/downloader.nix Normal file
View file

@ -0,0 +1,20 @@
{ ... }: {
programs = {
aria2 = {
enable = true;
settings = {
continue = true;
file-allocation = "falloc";
max-connection-per-server = 8;
split = 8;
min-split-size = "1M";
};
};
yt-dlp = {
enable = true;
settings = {
downloader = "aria2c";
};
};
};
}

85
home/firefox.nix Normal file
View file

@ -0,0 +1,85 @@
{ pkgs, ... }:
{
programs = {
firefox = {
enable = true;
package =
(pkgs.firefox.override {
extraPolicies = {
DontCheckDefaultBrowser = true;
DisablePocket = true;
DisableTelemetry = true;
DisplayBookmarksToolbar = "always";
EnableTrackingProtection = {
"Value" = true;
"Locked" = true;
"Cryptomining" = true;
"Fingerprinting" = true;
};
FirefoxHome = {
"Search" = true;
"TopSites" = false;
"SponsoredTopSites" = false;
"Highlights" = false;
"Pocket" = false;
"SponsoredPocket" = false;
"Snippets" = false;
"Locked" = true;
};
NoDefaultBookmarks = true;
OfferToSaveLogins = false;
SearchSuggestEnabled = false;
StartDownloadsInTempDirectory = true;
OverrideFirstRunPage = "";
OverridePostUpdatePage = "";
ExtensionSettings = {
"{b743f56d-1cc1-4048-8ba6-f9c2ab7aa54d}" = {
"allowed_types" = "theme";
"installation_mode" = "force_installed";
"install_url" = "https://addons.mozilla.org/firefox/downloads/latest/dracula-dark-colorscheme/latest.xpi";
};
"{d634138d-c276-4fc8-924b-40a0ea21d284}" = {
"allowed_types" = "extension";
"installation_mode" = "force_installed";
"install_url" = "https://addons.mozilla.org/firefox/downloads/latest/1password-x-password-manager/latest.xpi";
};
"queryamoid@kaply.com" = {
"allowed_types" = "extension";
"installation_mode" = "force_installed";
"install_url" = "https://github.com/mkaply/queryamoid/releases/download/v0.2/query_amo_addon_id-0.2-fx.xpi";
};
};
Preferences = {
"browser.crashReports.unsubmittedCheck.autoSubmit2" = { Value = false; Status = "locked"; };
"browser.selfsupport.url" = { Value = ""; Status = "locked"; };
"browser.aboutConfig.showWarning" = { Value = false; Status = "locked"; };
"browser.aboutHomeSnippets.updateUrl" = { Value = ""; Status = "locked"; };
"browser.startup.homepage_override.mstone" = { Value = "ignore"; Status = "locked"; };
"browser.startup.homepage_override.buildID" = { Value = ""; Status = "locked"; };
"browser.tabs.firefox-view" = { Value = false; Status = "locked"; };
"dom.event.contextmenu.enabled" = { Value = false; Status = "locked"; };
"dom.event.clipboardevents.enabled" = { Value = false; Status = "locked"; };
"dom.security.https_only_mode" = { Value = true; Status = "locked"; };
"extensions.htmlaboutaddons.recommendations.enabled" = { Value = false; Status = "locked"; };
"extensions.recommendations.themeRecommendationUrl" = { Value = ""; Status = "locked"; };
"network.IDN_show_punycode" = { Value = true; Status = "locked"; };
};
};
});
profiles.default = {
id = 0;
name = "Default";
isDefault = true;
settings = {
"app.shield.optoutstudies.enabled" = false;
"identity.fxaccounts.account.device.name" = "Skipper";
"privacy.donottrackheader.enabled" = true;
"privacy.firstparty.isolate" = true;
"startup.homepage_welcome_url" = "";
"startup.homepage_welcome_url.additional" = "";
"startup.homepage_override_url" = "";
};
};
};
};
}

34
home/kitty.nix Normal file
View file

@ -0,0 +1,34 @@
{ pkgs, ... }:
let
dracula = pkgs.fetchFromGitHub {
owner = "dracula";
repo = "kitty";
rev = "87717a3f00e3dff0fc10c93f5ff535ea4092de70";
hash = "sha256-78PTH9wE6ktuxeIxrPp0ZgRI8ST+eZ3Ok2vW6BCIZkc=";
};
in
{
programs.kitty = {
enable = true;
font.package = (pkgs.nerdfonts.override { fonts = [ "FiraCode" ]; });
font.name = "FiraCode Nerd Font";
extraConfig = ''
font_size 14
initial_window_width 100c
initial_window_height 25c
window_padding_width 4.0
background_opacity 0.98
cursor_shape beam
scrollback_lines 2000
copy_on_select clipboard
url_style curly
sync_to_monitor yes
shell_integration disabled
include ${dracula}/dracula.conf
'';
settings = {
enable_audio_bell = false;
};
};
}

38
home/media.nix Normal file
View file

@ -0,0 +1,38 @@
{ pkgs, ... }: {
home.packages = with pkgs; [
celluloid
spotify
spotify-tui
playerctl
];
programs.mpv = {
enable = true;
package = pkgs.mpv.override { youtubeSupport = true; };
config = {
hwdec = "auto-safe";
gpu-context = "wayland";
};
defaultProfiles = [ "gpu-hq" ];
scripts = with pkgs.mpvScripts; [ mpris ];
};
services = {
spotifyd = {
enable = true;
package = (pkgs.spotifyd.override { withKeyring = true; withMpris = true; });
settings = {
global = {
use_keyring = true;
use_mpris = true;
username_cmd = ''
${pkgs.libsecret}/bin/secret-tool search --all service spotifyd 2>&1 | grep 'username' | awk -F'= ' '{print $2}'
'';
device_name = "Skipperd";
device_type = "computer";
backend = "pulseaudio";
no_audio_cache = true;
dbus_type = "session";
};
};
};
};
}

144
home/nvim.nix Normal file
View file

@ -0,0 +1,144 @@
{ pkgs, ... }:
{
programs.neovim = {
enable = true;
viAlias = true;
vimAlias = true;
vimdiffAlias = true;
withNodeJs = true;
withPython3 = true;
withRuby = true;
extraLuaConfig = ''
vim.g.loaded_netrw = 1
vim.g.loaded_netrwPlugin = 1
'';
extraPackages = with pkgs; [
fd
ripgrep
rnix-lsp
tree-sitter
];
plugins = with pkgs.vimPlugins; [
dracula-nvim
neo-tree-nvim
(nvim-treesitter.withPlugins (plugins: with plugins; [ bash dockerfile gitcommit gitignore git_rebase go markdown markdown_inline nix rust toml yaml ]))
nvim-treesitter-context
nvim-treesitter-refactor
telescope-nvim
vim-fugitive
vim-go
vim-nix
rust-vim
{
plugin = bufferline-nvim;
type = "lua";
config = ''
require("bufferline").setup{
options = {
offsets = {
{
filetype = "neo-tree",
separator = true
}
},
diagnostics = "nvim_lsp",
separator_style = "slant",
truncate_names = true
}
}
'';
}
{
plugin = git-blame-nvim;
config = ''
let g:gitblame_date_format = '%r'
let g:gitblame_message_when_not_committed = '''
'';
}
{
plugin = gitsigns-nvim;
type = "lua";
config = ''
require('gitsigns').setup()
'';
}
{
plugin = lualine-nvim;
type = "lua";
config = ''
require('lualine').setup {
options = {
icons_enabled = true,
theme = 'dracula',
globalstatus = true
}
}
'';
}
{
plugin = nvim-lastplace;
type = "lua";
config = ''
require('nvim-lastplace').setup{}
'';
}
{
plugin = nvim-lspconfig;
type = "lua";
config = ''
require('lspconfig').gopls.setup{}
require('lspconfig').rnix.setup{}
require('lspconfig').rust_analyzer.setup{}
'';
}
{
plugin = nvim-web-devicons;
type = "lua";
config = ''
require('nvim-web-devicons').setup {
default = true;
}
'';
}
{
plugin = toggleterm-nvim;
type = "lua";
config = ''
require('toggleterm').setup{}
'';
}
];
extraConfig = ''
set autowrite
set background=dark
set clipboard+=unnamedplus
set expandtab
set laststatus=2
set list
set noshowmode
set noswapfile
set number
set relativenumber
set shiftwidth=2
set signcolumn=yes
set smartindent
set tabstop=2
set termguicolors
set updatetime=100
set wrap
colorscheme dracula
nmap <C-a> gT
nmap <C-d> gt
nnoremap <C-h> :noh<Return>
nnoremap <leader>` :ToggleTerm<Return>
nnoremap <leader>1 :NeoTreeFocusToggle<Return>
nnoremap <leader>ff <cmd>Telescope find_files<cr>
nnoremap <leader>fg <cmd>Telescope live_grep<cr>
nnoremap <leader>fb <cmd>Telescope buffers<cr>
nnoremap <leader>fh <cmd>Telescope help_tags<cr>
'';
};
}

36
home/persistence.nix Normal file
View file

@ -0,0 +1,36 @@
{ ... }: {
home.persistence."/persist/home" = {
allowOther = true;
directories = [
".cache/mesa_shader_cache"
".cache/mozilla"
".cache/nix"
".config/1Password"
".config/dconf"
".config/discord"
".config/lazygit"
".config/spotify"
".config/spotify-tui"
".gnupg"
".local/share/atuin"
".local/share/keyrings"
".local/share/nix"
".local/share/zsh"
".mozilla"
".nixos-config"
".ssh"
"Documents"
"Downloads"
"Music"
"Others"
"Pictures"
"Projects"
"Videos"
];
files = [
".config/gh/hosts.yml"
];
};
}

67
home/scripts.nix Normal file
View file

@ -0,0 +1,67 @@
{ pkgs, ... }:
{
xdg.configFile."scripts/power_menu.sh" = {
text = ''
#!/bin/sh
set -eu
chpower() {
case "$1" in
"")
;;
Shutdown)
exec systemctl poweroff
;;
Reboot)
exec systemctl reboot
;;
Hibernate)
exec systemctl hibernate
;;
Logout)
swaymsg exit
;;
*)
${pkgs.libnotify}/bin/notify-send -t 1500 -u low "Invalid Option"
;;
esac
}
OPTIONS="Shutdown\nReboot\nHibernate\nLogout"
chpower "$(printf "%b" "$OPTIONS" | sort | ${pkgs.rofi-wayland}/bin/rofi -dmenu -p "Power Menu")"
'';
executable = true;
};
xdg.configFile."scripts/volume_up.sh" = {
text = ''
#!/bin/sh
set -eu
${pkgs.wireplumber}/bin/wpctl set-mute @DEFAULT_AUDIO_SINK@ 0
[ $(${pkgs.wireplumber}/bin/wpctl get-volume @DEFAULT_AUDIO_SINK@ | awk -F': ' '{print $2}' | sed 's/\.//') -lt 100 ] && ${pkgs.wireplumber}/bin/wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%+
'';
executable = true;
};
xdg.configFile."scripts/tmux_sessions.sh" = {
text = ''
#!/bin/sh
set -eu
SESSION="$(${pkgs.tmux}/bin/tmux list-sessions -F "(#{session_attached}) #S [#{pane_current_command} in #{pane_current_path}] #{pane_title}" | sort | ${pkgs.rofi-wayland}/bin/rofi -dmenu -p "Running TMUX Sessions" | awk '{print $2}')"
case "$SESSION" in
"")
;;
*)
${pkgs.kitty}/bin/kitty ${pkgs.tmux}/bin/tmux -u attach-session -dEt "$SESSION"
;;
esac'';
executable = true;
};
}

207
home/sway/default.nix Normal file
View file

@ -0,0 +1,207 @@
{ config, lib, pkgs, ... }:
{
imports = [
./gnome-keyring.nix
./gtk.nix
./kanshi.nix
./mako.nix
./rofi
./swayidle.nix
./wallpapers.nix
./waybar
];
home.packages = with pkgs; [
wl-clipboard
];
wayland.windowManager.sway.enable = true;
wayland.windowManager.sway.package = pkgs.sway;
wayland.windowManager.sway.config.modifier = "Mod4";
wayland.windowManager.sway.config.bars = [ ];
wayland.windowManager.sway.xwayland = true;
wayland.windowManager.sway.config.fonts = {
names = [ "FiraCode Nerd Font" ];
size = 11.0;
};
wayland.windowManager.sway.config.input = {
"type:touchpad" = {
dwt = "enabled";
tap = "enabled";
natural_scroll = "enabled";
middle_emulation = "enabled";
};
};
wayland.windowManager.sway.systemdIntegration = true;
wayland.windowManager.sway.wrapperFeatures = {
gtk = true;
};
wayland.windowManager.sway.config.colors = {
background = "#F8F8F2";
focused = {
background = "#6272A4";
border = "#6272A4";
childBorder = "#6272A4";
indicator = "#6272A4";
text = "#F8F8F2";
};
focusedInactive = {
background = "#44475A";
border = "#44475A";
childBorder = "#44475A";
indicator = "#44475A";
text = "#F8F8F2";
};
placeholder = {
background = "#282A36";
border = "#282A36";
childBorder = "#282A36";
indicator = "#282A36";
text = "#F8F8F2";
};
unfocused = {
background = "#282A36";
border = "#282A36";
childBorder = "#282A36";
indicator = "#282A36";
text = "#BFBFBF";
};
urgent = {
background = "#FF5555";
border = "#44475A";
childBorder = "#FF5555";
indicator = "#FF5555";
text = "#F8F8F2";
};
};
wayland.windowManager.sway.config.seat = {
"*" = {
xcursor_theme = "Bibata-Modern-Classic 24";
};
};
wayland.windowManager.sway.config.keybindings =
let
modifier = config.wayland.windowManager.sway.config.modifier;
in
lib.mkOptionDefault {
"${modifier}+Return" = "exec ${pkgs.kitty}/bin/kitty ${pkgs.tmux}/bin/tmux new";
"${modifier}+Shift+Return" = "exec ${pkgs.kitty}/bin/kitty";
"${modifier}+d" = "exec ${pkgs.rofi-wayland}/bin/rofi -show drun";
"${modifier}+Shift+c" = "reload";
"${modifier}+l" = "exec ${pkgs.swaylock}/bin/swaylock -f -i /tmp/lockpaper.jpg";
"${modifier}+Shift+w" = "exec ~/.config/scripts/chpaper.sh";
"${modifier}+Shift+escape" = "exec ~/.config/scripts/power_menu.sh";
"${modifier}+f11" = "exec ~/.config/scripts/tmux_sessions.sh";
"XF86MonBrightnessUp" = "exec ${pkgs.brightnessctl}/bin/brightnessctl set +5%";
"XF86MonBrightnessDown" = "exec ${pkgs.brightnessctl}/bin/brightnessctl set 5%-";
"XF86AudioMute" = "exec ${pkgs.wireplumber}/bin/wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle";
"XF86AudioRaiseVolume" = "exec ~/.config/scripts/volume_up.sh";
"XF86AudioLowerVolume" = "exec ${pkgs.wireplumber}/bin/wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-";
"XF86AudioPlay" = "exec ${pkgs.playerctl}/bin/playerctl play-pause";
"XF86AudioNext" = "exec ${pkgs.playerctl}/bin/playerctl next";
"XF86AudioPrev" = "exec ${pkgs.playerctl}/bin/playerctl previous";
"print" = ''exec ${pkgs.grim}/bin/grim "''$(${pkgs.xdg-user-dirs}/bin/xdg-user-dir PICTURES)/Screenshots/screenshot-''$(date +%Y-%m-%d-%H-%M-%S).png"'';
"Shift+print" = ''exec ${pkgs.grim}/bin/grim -g "''$(${pkgs.slurp}/bin/slurp)" "''$(${pkgs.xdg-user-dirs}/bin/xdg-user-dir PICTURES)/Screenshots/screenshot-''$(date +%Y-%m-%d-%H-%M-%S).png"'';
};
wayland.windowManager.sway.config.startup = [
{ command = "${pkgs.polkit_gnome}/libexec/polkit-gnome-authentication-agent-1"; }
{ command = "~/.config/scripts/chpaper.sh"; always = true; }
{ command = "systemctl --user restart waybar.service"; always = true; }
{ command = "systemctl --user restart kanshi.service"; always = true; }
];
wayland.windowManager.sway.config.window.commands = [
{
command = "floating enable, focus";
criteria = {
app_id = "pavucontrol";
};
}
{
command = "floating enable, focus";
criteria = {
app_id = "blueman-manager";
};
}
{
command = "floating enable, focus";
criteria = {
app_id = "solaar";
};
}
{
command = "floating enable, focus, sticky enable, resize set width 99ppt";
criteria = {
app_id = "mpv";
};
}
{
command = "floating enable, focus";
criteria = {
app_id = "eog";
};
}
{
command = "floating enable, focus";
criteria = {
app_id = "io.elementary.files";
};
}
{
command = "floating enable, focus";
criteria = {
app_id = "gnome-system-monitor";
};
}
{
command = "floating enable, focus";
criteria = {
app_id = "virt-manager";
};
}
{
command = "floating enable, focus";
criteria = {
class = "1Password";
};
}
{
command = "floating enable, focus";
criteria = {
app_id = "io.github.celluloid_player.Celluloid";
};
}
{
command = "floating enable, focus";
criteria = {
app_id = "gnome-disks";
};
}
{
command = "move container to workspace 2, focus";
criteria = {
app_id = "firefox";
};
}
{
command = "move container to workspace 9, focus";
criteria = {
class = "Spotify";
};
}
];
wayland.windowManager.sway.config.gaps.outer = 2;
wayland.windowManager.sway.config.gaps.inner = 2;
wayland.windowManager.sway.config.window.titlebar = false;
wayland.windowManager.sway.config.floating.titlebar = false;
}

View file

@ -0,0 +1,7 @@
{ pkgs, ... }:
{
services.gnome-keyring.enable = true;
services.gpg-agent.enable = true;
services.gpg-agent.pinentryFlavor = "gnome3";
}

45
home/sway/gtk.nix Normal file
View file

@ -0,0 +1,45 @@
{ lib, pkgs, ... }:
let
gtkTheme = {
name = "Dracula";
package = pkgs.dracula-gtk;
};
iconTheme = {
name = "Newaita-dark";
package = pkgs.newaita-icon-theme.override { panel = "dark"; folder = "bluegray"; };
};
cursorTheme = {
name = "Bibata-Modern-Classic";
package = pkgs.bibata-cursors;
};
in
{
gtk.enable = true;
gtk.theme = gtkTheme;
home.sessionVariables.GTK_THEME = gtkTheme.name;
xdg.configFile = {
"gtk-4.0/assets".source = "${gtkTheme.package}/share/themes/${gtkTheme.name}/gtk-4.0/assets";
"gtk-4.0/gtk.css".source = "${gtkTheme.package}/share/themes/${gtkTheme.name}/gtk-4.0/gtk.css";
"gtk-4.0/gtk-dark.css".source = "${gtkTheme.package}/share/themes/${gtkTheme.name}/gtk-4.0/gtk-dark.css";
};
gtk.cursorTheme = cursorTheme;
gtk.iconTheme = iconTheme;
gtk.gtk3.extraConfig = {
gtk-application-prefer-dark-theme = true;
};
gtk.gtk4.extraConfig = {
gtk-application-prefer-dark-theme = true;
};
dconf.settings = {
"org/gnome/desktop/interface" = {
"color-scheme" = "prefer-dark";
};
};
}

33
home/sway/kanshi.nix Normal file
View file

@ -0,0 +1,33 @@
{ ... }:
{
services.kanshi.enable = true;
services.kanshi.profiles = {
undocked = {
outputs = [
{
criteria = "eDP-1";
mode = "1920x1080";
position = "0,0";
}
];
};
docked = {
outputs = [
{
criteria = "eDP-1";
transform = "normal";
mode = "1920x1080";
position = "0,360";
scale = 1.5;
}
{
criteria = "DP-1";
transform = "normal";
mode = "1920x1080";
position = "1280,0";
}
];
};
};
}

22
home/sway/mako.nix Normal file
View file

@ -0,0 +1,22 @@
{ pkgs, ... }:
{
services.mako = {
enable = true;
font = "FiraCode Nerd Font 11";
backgroundColor = "#282A36";
borderColor = "#282A36";
progressColor = "over #313244";
textColor = "#44475A";
extraConfig = ''
[urgency=low]
border-color=#282a36
[urgency=normal]
border-color=#f1fa8c
[urgency=high]
border-color=#ff5555
'';
};
}

View file

@ -0,0 +1,12 @@
{ pkgs, ... }: {
programs.rofi = {
enable = true;
cycle = false;
package = pkgs.rofi-wayland;
font = "FiraCode Nerd Font 16";
extraConfig = {
show-icons = true;
};
theme = ./theme.rasi;
};
}

80
home/sway/rofi/theme.rasi Normal file
View file

@ -0,0 +1,80 @@
configuration {
font: "FiraCode Nerd Font 14";
drun {
display-name: "";
}
run {
display-name: "";
}
window {
display-name: "";
}
timeout {
delay: 10;
action: "kb-cancel";
}
}
* {
border: 0;
margin: 0;
padding: 0;
spacing: 0;
bg: #282a36;
fg: #f8f8f2;
blue: #6272a4;
purple: #bd93f9;
background-color: @bg;
text-color: @fg;
}
window {
transparency: "real";
}
mainbox {
children: [inputbar, listview];
}
inputbar {
background-color: @blue;
children: [prompt, entry];
}
entry {
background-color: inherit;
padding: 12px 3px;
}
prompt {
background-color: inherit;
padding: 12px;
}
listview {
lines: 8;
}
element {
children: [element-icon, element-text];
text-color: @blue;
}
element-icon {
padding: 10px 10px;
}
element-text {
padding: 10px 0;
text-color: inherit;
}
element-text selected {
text-color: @purple;
}

11
home/sway/swayidle.nix Normal file
View file

@ -0,0 +1,11 @@
{ pkgs, ... }:
{
services.swayidle.enable = true;
services.swayidle.events = [
{ event = "before-sleep"; command = "${pkgs.swaylock}/bin/swaylock -f -i /tmp/lockpaper.jpg"; }
];
services.swayidle.timeouts = [
{ timeout = 600; command = "${pkgs.swaylock}/bin/swaylock -f -i /tmp/lockpaper.jpg"; }
];
}

27
home/sway/wallpapers.nix Normal file
View file

@ -0,0 +1,27 @@
{ pkgs, ... }:
{
xdg.dataFile."wallpapers/catppuccin".source = "${pkgs.catppuccin-wallpapers}/share/wallpapers";
xdg.configFile."scripts/chpaper.sh" = {
text = ''
#!/bin/sh
set -eu
DIR="''${HOME}/.local/share/wallpapers"
random_paper() {
find -L "''${DIR}"/ -type f -regextype egrep -regex ".*\.(jpe?g|png)$" | shuf -n1
}
SWAYSOCK="''${SWAYSOCK:-""}"
if [ -z "''${SWAYSOCK}" ] ; then
SWAYSOCK="$(find /run/user/"$(id -u)"/ -name "sway-ipc.$(id -u).*.sock")"
export SWAYSOCK
fi
${pkgs.imagemagick}/bin/convert "$(random_paper)" /tmp/wallpaper.jpg && swaymsg "output * bg '/tmp/wallpaper.jpg' fill" &
${pkgs.imagemagick}/bin/convert "$(random_paper)" /tmp/lockpaper.jpg
'';
executable = true;
};
}

View file

@ -0,0 +1,12 @@
@define-color background #282a36;
@define-color foreground #f8f8f2;
@define-color selection #44475a;
@define-color unfocused #6272a4;
@define-color red #ff5555;
@define-color green #50fa7b;
@define-color yellow #f1fa8c;
@define-color cyan #8be9fd;
@define-color purple #bd93f9;
@define-color pink #ff79c6;
@define-color orange #ffb86c;

View file

@ -0,0 +1,93 @@
{ pkgs, ... }:
{
programs.waybar.enable = true;
programs.waybar.systemd.enable = true;
programs.waybar.style = ./style.css;
xdg.configFile."waybar/colors.css".source = ./colors.css;
programs.waybar.settings = {
mainBar = {
layer = "top";
position = "top";
height = 28;
modules-left = [ "sway/workspaces" "sway/window" "sway/mode" ];
modules-center = [ ];
modules-right = [ "tray" "idle_inhibitor" "network" "bluetooth" "pulseaudio" "backlight" "battery" "clock" ];
"sway/mode" = {
"format" = "{}";
};
"sway/window" = {
"tooltip" = false;
};
"idle_inhibitor" = {
"format" = "{icon}";
"format-icons" = {
"activated" = "";
"deactivated" = "";
};
"tooltip" = false;
};
"clock" = {
"tooltip" = false;
"interval" = 1;
"format" = "{:%I:%M}";
"format-alt" = "{:%d %B %Y, %A}";
};
"backlight" = {
"format" = "{icon}";
"format-icons" = [ "" "" "" "" ];
};
"battery" = {
"states" = {
"good" = 90;
"warning" = 20;
"critical" = 10;
};
"format" = "{icon}";
"format-alt" = "{icon} {capacity}% ({time})";
"format-charging" = " {capacity}%";
"format-plugged" = " {capacity}%";
"format-icons" = [ "" "" "" "" "" "" "" "" "" "" "" ];
"tooltip" = false;
};
"network" = {
"format-wifi" = "";
"format-ethernet" = "";
"format-linked" = "";
"format-disconnected" = "";
"format-alt" = "{ifname}: {ipaddr}/{cidr}";
"tooltip" = false;
};
"pulseaudio" = {
"tooltip" = false;
"format" = "{icon} {format_source}";
"format-muted" = " {format_source}";
"format-bluetooth" = " {icon} {format_source}";
"format-bluetooth-muted" = " {format_source}";
"format-source" = "";
"format-source-muted" = "";
"format-icons" = {
"headphones" = "";
"handsfree" = "";
"headset" = "";
"phone" = "";
"portable" = "";
"car" = "";
"default" = [ "" "奔" "" ];
};
"on-click" = "${pkgs.pavucontrol}/bin/pavucontrol";
};
"bluetooth" = {
"format" = "";
"format-connected" = "";
"format-disabled" = "";
"format-off" = "";
"format-connected-battery" = " {device_battery_percentage}%";
"on-click" = "${pkgs.blueman}/bin/blueman-manager";
};
"tray" = {
"spacing" = 4;
};
};
};
}

110
home/sway/waybar/style.css Normal file
View file

@ -0,0 +1,110 @@
@import "colors.css";
* {
border: none;
border-radius: 0px;
font-family: 'FiraCode Nerd Font';
font-size: 16px;
min-height: 0;
}
#window {
padding: 0px 10px;
background: @background;
}
window#waybar {
background: @background;
color: @foreground;
}
window#waybar.hidden {
opacity: 0.2;
}
window#waybar.empty {
background: @background;
}
window#waybar.solo {
background: @background;
}
#workspaces button {
padding: 0px 3px;
background: @background;
color: @foreground;
}
#workspaces button.focused {
color: @green;
}
#workspaces button.urgent {
background: @background;
color: @red;
}
#mode {
background: @background;
border: 3px solid @purple;
}
#clock,
#battery,
#backlight,
#network,
#pulseaudio,
#tray,
#mode,
#idle_inhibitor,
#bluetooth {
padding: 0 10px;
color: @foreground;
background-color: @background;
}
@keyframes blink {
to {
color: @foreground;
}
}
#battery.warning {
color: @yellow;
animation-name: blink;
animation-duration: 1s;
animation-timing-function: linear;
animation-iteration-count: infinite;
animation-direction: normal;
}
#battery.critical {
color: @red;
animation-name: blink;
animation-duration: 1s;
animation-timing-function: linear;
animation-iteration-count: infinite;
animation-direction: normal;
}
#battery.charging {
color: @green;
animation-name: blink;
animation-duration: 1s;
animation-timing-function: linear;
animation-iteration-count: infinite;
animation-direction: normal;
}
label:focus {
background-color: @selection;
}
#temperature.critical {
color: @red;
}
#idle_inhibitor.activated {
color: @green;
}

75
home/terminal.nix Normal file
View file

@ -0,0 +1,75 @@
{ config, pkgs, ... }:
{
imports = [
./kitty.nix
./tmux.nix
];
programs = {
atuin.enable = true;
bat = {
enable = true;
config = {
theme = "Dracula";
};
};
btop = {
enable = true;
settings = {
color_theme = "dracula";
vim_keys = true;
update_ms = 1000;
};
};
direnv = {
enable = true;
nix-direnv.enable = true;
};
exa = {
enable = true;
enableAliases = true;
extraOptions = [ "--group-directories-first" "--group" ];
git = true;
icons = true;
};
starship = {
enable = true;
settings = {
add_newline = false;
git_metrics.disabled = false;
};
};
zsh = {
enable = true;
defaultKeymap = "viins";
enableAutosuggestions = true;
enableCompletion = true;
enableSyntaxHighlighting = true;
history = {
expireDuplicatesFirst = true;
extended = true;
path = "${config.xdg.dataHome}/zsh/zsh_history";
};
initExtra = ''
bindkey -v '^?' backward-delete-char
'';
profileExtra = ''
if [ -z $DISPLAY ] && [ "$(tty)" = "/dev/tty1" ] ; then
exec ${pkgs.sway}/bin/sway
fi
'';
shellAliases = {
cat = "bat";
cp = "cp -v";
grep = "grep --color=auto";
ln = "ln -v";
mv = "mv -v";
file = "nix run nixpkgs#file --";
nurl = "nix run nixpkgs#nurl --";
unzip = "nix run nixpkgs#unzip --";
rebuild_system = "sudo nixos-rebuild --flake /persist/home/.nixos-config# --cores 0 --max-jobs 8";
};
};
};
}

45
home/tmux.nix Normal file
View file

@ -0,0 +1,45 @@
{ pkgs, ... }:
{
programs.tmux = {
enable = true;
shell = "${pkgs.zsh}/bin/zsh";
escapeTime = 0;
plugins = with pkgs; [
{
plugin = tmuxPlugins.dracula;
extraConfig = ''
set -g @dracula-show-powerline true
set -g @dracula-plugins "time"
set -g @dracula-show-timezone false
set -g @dracula-day-month true
set -g @dracula-show-flags true
set -g @dracula-show-left-icon session
'';
}
];
extraConfig = ''
set -g update-environment 'DISPLAY TERM SWAYSOCK WAYLAND_DISPLAY'
if "[[ ''${TERM} =~ 256color || ''${TERM} == xterm-kitty || ''${TERM} == fbterm ]]" 'set -g default-terminal tmux-256color'
set -g allow-rename on
set -g set-titles on
set -g set-titles-string "#W"
set -g automatic-rename on
set -g automatic-rename-format '(#{b:pane_current_path}) #{pane_current_command}'
set -g status-position top
set -g status-interval 1
set -g mouse on
set -g monitor-activity on
set -g monitor-bell on
set -g visual-activity on
set -g visual-bell on
set -g base-index 1
setw -g pane-base-index 1
bind - split-window -v -c "#{pane_current_path}"
bind \\ split-window -h -c "#{pane_current_path}"
'';
};
}

18
home/virt-manager.nix Normal file
View file

@ -0,0 +1,18 @@
{ pkgs, ... }: {
home.packages = [ pkgs.virt-manager ];
dconf.settings = {
"org/virt-manager/virt-manager/confirm" = {
"forcepoweroff" = false;
};
"org/virt-manager/virt-manager/connections" = {
"autoconnect" = [ "qemu:///system" ];
"uris" = [ "qemu:///system" ];
};
"org/virt-manager/virt-manager/new-vm" = { "firmware" = "uefi"; };
"org/virt-manager/virt-manager/stats" = {
"enable-disk-poll" = true;
"enable-net-poll" = true;
};
"org/virt-manager/virt-manager/vmlist-fields" = { "network-traffic" = true; };
};
}

View file

@ -0,0 +1,33 @@
{ lib, stdenvNoCC, fetchFromGitHub, pack ? "pack_1", theme ? "cuts" }:
stdenvNoCC.mkDerivation {
pname = "adi1090x-plymouth";
version = "latest";
src = fetchFromGitHub {
owner = "adi1090x";
repo = "plymouth-themes";
rev = "bf2f570bee8e84c5c20caac353cbe1d811a4745f";
sha256 = "sha256-VNGvA8ujwjpC2rTVZKrXni2GjfiZk7AgAn4ZB4Baj2k=";
};
installPhase = ''
runHook preInstall
mkdir -p $out/share/plymouth/themes/
cp -r ${pack}/${theme} $out/share/plymouth/themes/adi1090x
sed -i "s@\/usr\/@$out\/@" $out/share/plymouth/themes/adi1090x/${theme}.plymouth
mv $out/share/plymouth/themes/adi1090x/${theme}.plymouth $out/share/plymouth/themes/adi1090x/adi1090x.plymouth
sed -i 's/${theme}/adi1090x/g' $out/share/plymouth/themes/adi1090x/adi1090x.plymouth
mv $out/share/plymouth/themes/adi1090x/${theme}.script $out/share/plymouth/themes/adi1090x/adi1090x.script
runHook postInstall
'';
meta = with lib; {
description = "A hugh collection (80+) of plymouth themes ported from android bootanimations";
homepage = "https://github.com/adi1090x/plymouth-themes";
license = licenses.gpl3;
platform = platforms.linux;
};
}

View file

@ -0,0 +1,28 @@
{ lib, stdenvNoCC, fetchFromGitHub }:
stdenvNoCC.mkDerivation {
pname = "catppuccin-wallpapers";
version = "latest";
src = fetchFromGitHub {
owner = "catppuccin";
repo = "wallpapers";
rev = "0cea4a28451851a637762dec07ec4fb2bfebc421";
hash = "sha256-B2ncT2qPc0inHHcO1BAZW5of+K0sIdtPcdpqcPUbKBo=";
};
installPhase = ''
runHook preInstall
mkdir -p $out/share/wallpapers/catppuccin
find . -type f -regextype egrep -regex ".*\.(jpe?g|png)$" -exec cp {} $out/share/wallpapers/catppuccin/ \;
runHook postInstall
'';
meta = with lib; {
description = "Wallpapers to match your Catppuccin setups!";
homepage = "https://github.com/catppuccin/wallpapers";
license = licenses.mit;
};
}

6
packages/default.nix Normal file
View file

@ -0,0 +1,6 @@
self: super: {
adi1090x-plymouth = super.callPackage ./adi1090x-plymouth { };
catppuccin-wallpapers = super.callPackage ./catppuccin-wallpapers { };
dracula-gtk = super.callPackage ./dracula-gtk { };
newaita-icon-theme = super.callPackage ./newaita-icon-theme { };
}

View file

@ -0,0 +1,36 @@
{ lib, stdenvNoCC, fetchFromGitHub, gtk3, gnome-themes-extra, gtk-engine-murrine }:
stdenvNoCC.mkDerivation {
pname = "dracula-gtk";
version = "4.0";
src = fetchFromGitHub {
owner = "dracula";
repo = "gtk";
rev = "df9af5e1ded3d2e266bcd30b3d38ff74c9a1a7aa";
hash = "sha256-2lmpEPYxdbRnKgcJ792cuzyOBmOIWhja18q+F3Pxgjs=";
};
nativeBuildInputs = [ gtk3 ];
buildInputs = [
gnome-themes-extra
];
propagatedUserEnvPkgs = [ gtk-engine-murrine ];
installPhase = ''
runHook preInstall
mkdir -p $out/share/themes/Dracula
cp -ra assets cinnamon gnome-shell gtk-2.0 gtk-3.0 gtk-3.20 gtk-4.0 metacity-1 unity xfwm4 index.theme $out/share/themes/Dracula/
runHook postInstall
'';
meta = with lib; {
description = "Dracula GTK theme";
homepage = "https://draculatheme.com/gtk";
license = licenses.gpl3;
platforms = platforms.linux;
};
}

View file

@ -0,0 +1,54 @@
{ lib, stdenvNoCC, fetchFromGitHub, gtk3, gnome, gnome-icon-theme, hicolor-icon-theme, panel ? "dark", folder ? "default" }:
stdenvNoCC.mkDerivation {
pname = "newaita-icon-theme";
version = "latest";
src = fetchFromGitHub {
owner = "cbrnix";
repo = "Newaita";
rev = "c2b596b097a83be23833dc7bc40b5d07a63315e3";
hash = "sha256-tqtjUy8RjvOu0NaK+iE0R1g7/eqCpmhbdxuNGd/YfSI=";
};
nativeBuildInputs = [ gtk3 ];
propagatedBuildInputs = [
gnome.adwaita-icon-theme
gnome-icon-theme
hicolor-icon-theme
];
dontDropIconThemeCache = true;
installPhase = ''
runHook preInstall
PANEL_DIR=".DP"
if [ "${panel}" != "dark" ]; then
PANEL_DIR=".LP"
fi
FOLDER_DIR=".places-${folder}"
mkdir -p $out/share/icons/Newaita{,-dark}
cp -ra Newaita/{actions,apps,categories,devices,emblems,mimetypes,status,icon-theme.cache,index.theme} $out/share/icons/Newaita/
cp -ra Newaita-dark/{actions,apps,categories,devices,emblems,mimetypes,status,icon-theme.cache,index.theme} $out/share/icons/Newaita-dark/
cp -ra Newaita/''$PANEL_DIR $out/share/icons/Newaita/panel
cp -ra Newaita-dark/''$PANEL_DIR $out/share/icons/Newaita-dark/panel
cp -ra Newaita/''$FOLDER_DIR $out/share/icons/Newaita/places
cp -ra Newaita-dark/''$FOLDER_DIR $out/share/icons/Newaita-dark/places
runHook postInstall
'';
postFixup = "gtk-update-icon-cache $out/share/icons/Newaita{,-dark}";
meta = with lib; {
description = "Newaita icon theme";
homepage = "https://github.com/cbrnix/Newaita";
platforms = platforms.linux;
};
}

86
system/default.nix Normal file
View file

@ -0,0 +1,86 @@
{ lib, pkgs, ... }: {
imports = [
./filesystem.nix
./gnome-keyring.nix
./gtk.nix
./hardware.nix
./packages.nix
./persistence.nix
./plymouth.nix
./secureboot.nix
./services.nix
./swaylock.nix
./virtualisation.nix
];
boot = {
initrd.systemd.enable = true;
kernel.sysctl = {
"vm.swappiness" = 0;
};
};
console.useXkbConfig = true;
i18n = {
defaultLocale = "en_US.UTF-8";
extraLocaleSettings = {
LC_ADDRESS = "en_US.UTF-8";
LC_IDENTIFICATION = "en_US.UTF-8";
LC_MEASUREMENT = "en_US.UTF-8";
LC_MONETARY = "en_US.UTF-8";
LC_NAME = "en_US.UTF-8";
LC_NUMERIC = "en_US.UTF-8";
LC_PAPER = "en_US.UTF-8";
LC_TELEPHONE = "en_US.UTF-8";
LC_TIME = "en_US.UTF-8";
LC_ALL = "en_US.UTF-8";
};
supportedLocales = [ "en_US.UTF-8/UTF-8" ];
};
networking = {
hostName = "Skipper";
networkmanager.enable = true;
useDHCP = lib.mkDefault false;
};
security = {
apparmor = {
enable = true;
enableCache = true;
};
audit.enable = true;
auditd.enable = true;
polkit.enable = true;
rtkit.enable = true;
tpm2 = {
enable = true;
abrmd.enable = true;
pkcs11.enable = true;
tctiEnvironment.enable = true;
};
sudo = {
package = pkgs.sudo.override { withInsults = true; };
extraConfig = ''
Defaults lecture="never"
'';
wheelNeedsPassword = true;
};
};
sound.enable = true;
time.timeZone = "Asia/Kolkata";
xdg = {
portal = {
enable = true;
wlr.enable = true;
extraPortals = [ pkgs.xdg-desktop-portal-gtk ];
};
};
system.stateVersion = "23.05";
}

15
system/disk.nix Normal file
View file

@ -0,0 +1,15 @@
{ ... }: {
boot = {
resumeDevice = "/dev/vg0/swap";
initrd.luks.devices = {
luks0 = {
allowDiscards = true;
bypassWorkqueues = true;
device = "/dev/disk/by-partlabel/CRYPT";
preLVM = true;
};
};
};
swapDevices = [{ device = "/dev/vg0/swap"; }];
}

32
system/filesystem.nix Normal file
View file

@ -0,0 +1,32 @@
{ ... }: {
boot.tmpOnTmpfs = true;
fileSystems = {
"/" = {
device = "tmpfs";
fsType = "tmpfs";
options = [ "defaults" "uid=0" "gid=0" "mode=0755" ];
neededForBoot = true;
};
"/nix" = {
device = "/dev/vg0/system";
fsType = "btrfs";
options = [ "subvol=/@nix" "compress-force=zstd" ];
neededForBoot = true;
};
"/persist" = {
device = "/dev/vg0/system";
fsType = "btrfs";
options = [ "subvol=/@persist" "compress-force=zstd" ];
neededForBoot = true;
};
"/mnt/system" = {
device = "/dev/vg0/system";
fsType = "btrfs";
options = [ "subvol=/" "compress-force=zstd" ];
};
"/boot" = {
device = "/dev/disk/by-partlabel/ESP";
fsType = "vfat";
};
};
}

7
system/gnome-keyring.nix Normal file
View file

@ -0,0 +1,7 @@
{ ... }:
{
programs.seahorse.enable = true;
services.gnome.gnome-keyring.enable = true;
security.pam.services.passwd.enableGnomeKeyring = true;
security.pam.services.login.enableGnomeKeyring = true;
}

4
system/gtk.nix Normal file
View file

@ -0,0 +1,4 @@
{ ... }:
{
programs.dconf.enable = true;
}

28
system/hardware.nix Normal file
View file

@ -0,0 +1,28 @@
{ lib, pkgs, config, ... }: {
imports = [ ./disk.nix ./kernel.nix ];
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
hardware.opengl = {
enable = true;
extraPackages = [ pkgs.intel-media-driver ];
driSupport = true;
};
hardware = {
cpu.intel.updateMicrocode = lib.mkDefault true;
enableRedistributableFirmware = true;
};
hardware.bluetooth.enable = true;
hardware.sensor.hddtemp = {
enable = true;
drives = [ "/dev/disk/by-path/pci-0000:01:00.0-nvme-1" ];
};
boot.loader = {
efi.canTouchEfiVariables = true;
};
}

21
system/kernel.nix Normal file
View file

@ -0,0 +1,21 @@
{ lib, pkgs, ... }: {
boot = {
initrd = {
availableKernelModules = [
"xhci_pci"
"thunderbolt"
"vmd"
"nvme"
"usb_storage"
"sd_mod"
"rtsx_pci_sdmmc"
];
kernelModules = [ "i915" ];
};
kernelModules = [ "kvm-intel" ];
kernelPackages = pkgs.linuxPackages_zen;
};
powerManagement.cpuFreqGovernor = lib.mkDefault "powersave";
}

15
system/nix.nix Normal file
View file

@ -0,0 +1,15 @@
{ ... }: {
nix.settings = {
substituters = [
"https://devenv.cachix.org"
"https://nix-community.cachix.org/"
];
trusted-public-keys = [
"devenv.cachix.org-1:w1cLUi8dv3hnoSPGAuibQv+f9TZLr6cv/Hm9XgU50cw="
"nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs="
];
auto-optimise-store = true;
experimental-features = [ "nix-command" "flakes" ];
};
nixpkgs.config.allowUnfree = true;
}

24
system/packages.nix Normal file
View file

@ -0,0 +1,24 @@
{ pkgs, ... }: {
fonts.fonts = with pkgs; [
cantarell-fonts
liberation_ttf
(nerdfonts.override { fonts = [ "FiraCode" ]; })
noto-fonts
noto-fonts-cjk
noto-fonts-emoji
];
programs = {
git.enable = true;
neovim = {
enable = true;
defaultEditor = true;
viAlias = true;
vimAlias = true;
};
xwayland.enable = true;
zsh.enable = true;
};
environment.pathsToLink = [ "/share/zsh" ];
}

23
system/persistence.nix Normal file
View file

@ -0,0 +1,23 @@
{ ... }:
{
environment.persistence."/persist/system" = {
hideMounts = true;
directories = [
"/etc/NetworkManager/system-connections"
"/etc/secureboot"
"/root/.cache/nix"
"/var/cache/apparmor"
"/var/lib/bluetooth"
"/var/lib/docker"
"/var/lib/libvirt"
"/var/lib/NetworkManager"
"/var/lib/nixos"
"/var/lib/systemd"
"/var/log"
];
files = [
"/etc/machine-id"
"/var/lib/logrotate.status"
];
};
}

10
system/plymouth.nix Normal file
View file

@ -0,0 +1,10 @@
{ pkgs, ... }: {
boot.consoleLogLevel = 3;
boot.kernelParams = [ "quiet" ];
boot.plymouth = {
enable = true;
themePackages = [ (pkgs.adi1090x-plymouth.override { pack = "pack_3"; theme = "owl"; }) ];
theme = "adi1090x";
};
}

12
system/secureboot.nix Normal file
View file

@ -0,0 +1,12 @@
{ lib, pkgs, ... }:
{
boot.bootspec.enable = true;
boot.loader.systemd-boot.enable = lib.mkForce false;
boot.lanzaboote = {
enable = true;
pkiBundle = "/etc/secureboot";
};
environment.systemPackages = with pkgs; [
sbctl
];
}

23
system/services.nix Normal file
View file

@ -0,0 +1,23 @@
{ pkgs, ... }: {
services = {
blueman.enable = true;
dbus = {
enable = true;
apparmor = "enabled";
packages = [ pkgs.gcr pkgs.gcr_4 ];
};
fstrim.enable = true;
fwupd.enable = true;
gvfs.enable = true;
lvm.dmeventd.enable = true;
pipewire = {
enable = true;
alsa.enable = true;
jack.enable = true;
pulse.enable = true;
};
power-profiles-daemon.enable = true;
thermald.enable = true;
udisks2.enable = true;
};
}

5
system/swaylock.nix Normal file
View file

@ -0,0 +1,5 @@
{ ... }:
{
security.pam.services.swaylock = { };
}

13
system/virtualisation.nix Normal file
View file

@ -0,0 +1,13 @@
{ pkgs, ... }: {
virtualisation = {
docker.enable = true;
kvmgt.enable = true;
libvirtd = {
enable = true;
qemu.ovmf = {
enable = true;
packages = [ pkgs.OVMFFull.fd ];
};
};
};
}

20
users/default.nix Normal file
View file

@ -0,0 +1,20 @@
{ pkgs, ... }:
let
user = import ./user.nix;
in
{
services.getty.autologinUser = user.primary.userName;
users.mutableUsers = false;
users.users = {
root.hashedPassword = user.root.hashedPassword;
"${user.primary.userName}" = {
uid = 1000;
hashedPassword = user.primary.hashedPassword;
description = user.primary.realName;
isNormalUser = true;
extraGroups = [ "docker" "libvirtd" "networkmanager" "tss" "wheel" ];
shell = pkgs.zsh;
};
};
}

BIN
users/user.nix Normal file

Binary file not shown.