add current system config
This commit is contained in:
parent
0f01f958c2
commit
69577756e5
48 changed files with 2427 additions and 0 deletions
539
flake.lock
Normal file
539
flake.lock
Normal 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
56
flake.nix
Normal 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
73
home/default.nix
Normal 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
43
home/dev.nix
Normal 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
20
home/downloader.nix
Normal 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
85
home/firefox.nix
Normal 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
34
home/kitty.nix
Normal 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
38
home/media.nix
Normal 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
144
home/nvim.nix
Normal 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
36
home/persistence.nix
Normal 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
67
home/scripts.nix
Normal 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
207
home/sway/default.nix
Normal 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;
|
||||
}
|
||||
|
7
home/sway/gnome-keyring.nix
Normal file
7
home/sway/gnome-keyring.nix
Normal 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
45
home/sway/gtk.nix
Normal 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
33
home/sway/kanshi.nix
Normal 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
22
home/sway/mako.nix
Normal 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
|
||||
'';
|
||||
};
|
||||
}
|
12
home/sway/rofi/default.nix
Normal file
12
home/sway/rofi/default.nix
Normal 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
80
home/sway/rofi/theme.rasi
Normal 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
11
home/sway/swayidle.nix
Normal 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
27
home/sway/wallpapers.nix
Normal 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;
|
||||
};
|
||||
}
|
12
home/sway/waybar/colors.css
Normal file
12
home/sway/waybar/colors.css
Normal 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;
|
||||
|
93
home/sway/waybar/default.nix
Normal file
93
home/sway/waybar/default.nix
Normal 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
110
home/sway/waybar/style.css
Normal 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
75
home/terminal.nix
Normal 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
45
home/tmux.nix
Normal 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
18
home/virt-manager.nix
Normal 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; };
|
||||
};
|
||||
}
|
33
packages/adi1090x-plymouth/default.nix
Normal file
33
packages/adi1090x-plymouth/default.nix
Normal 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;
|
||||
};
|
||||
}
|
28
packages/catppuccin-wallpapers/default.nix
Normal file
28
packages/catppuccin-wallpapers/default.nix
Normal 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
6
packages/default.nix
Normal 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 { };
|
||||
}
|
36
packages/dracula-gtk/default.nix
Normal file
36
packages/dracula-gtk/default.nix
Normal 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;
|
||||
};
|
||||
}
|
54
packages/newaita-icon-theme/default.nix
Normal file
54
packages/newaita-icon-theme/default.nix
Normal 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
86
system/default.nix
Normal 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
15
system/disk.nix
Normal 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
32
system/filesystem.nix
Normal 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
7
system/gnome-keyring.nix
Normal 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
4
system/gtk.nix
Normal file
|
@ -0,0 +1,4 @@
|
|||
{ ... }:
|
||||
{
|
||||
programs.dconf.enable = true;
|
||||
}
|
28
system/hardware.nix
Normal file
28
system/hardware.nix
Normal 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
21
system/kernel.nix
Normal 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
15
system/nix.nix
Normal 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
24
system/packages.nix
Normal 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
23
system/persistence.nix
Normal 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
10
system/plymouth.nix
Normal 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
12
system/secureboot.nix
Normal 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
23
system/services.nix
Normal 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
5
system/swaylock.nix
Normal file
|
@ -0,0 +1,5 @@
|
|||
{ ... }:
|
||||
|
||||
{
|
||||
security.pam.services.swaylock = { };
|
||||
}
|
13
system/virtualisation.nix
Normal file
13
system/virtualisation.nix
Normal 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
20
users/default.nix
Normal 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
BIN
users/user.nix
Normal file
Binary file not shown.
Loading…
Reference in a new issue