starting point
This commit is contained in:
commit
279f90bfb8
165
README.md
Executable file
165
README.md
Executable file
|
@ -0,0 +1,165 @@
|
||||||
|
# My nixos flake
|
||||||
|
This is my nixos configuration.
|
||||||
|
|
||||||
|
# Installation
|
||||||
|
To install either run the following script, or follow the instructions.
|
||||||
|
|
||||||
|
```sh
|
||||||
|
curl https://gitlab.com/SpoodyTheOne/nixos-config/-/raw/master/install.sh -o install.sh
|
||||||
|
sudo chmod +x install.sh
|
||||||
|
./install.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
## Disko partitioning
|
||||||
|
### Finding your disk
|
||||||
|
run `lsblk` to find the name of your drive. In my case it was `/dev/nvme0n1` but other names it can have are `/dev/sd[a-z]` or `/dev/vd[a-z]` if you are installing on a virtual machine.
|
||||||
|
|
||||||
|
### Acquire disko config
|
||||||
|
run
|
||||||
|
```sh
|
||||||
|
curl https://gitlab.com/SpoodyTheOne/nixos-config/-/raw/master/modules/disko/disko-luks.nix -o /tmp/disko.nix
|
||||||
|
```
|
||||||
|
to download the latest version of my disko config
|
||||||
|
|
||||||
|
### Run disko partitioning
|
||||||
|
This will run my disko config and partition your disk.
|
||||||
|
|
||||||
|
> [!WARNING]
|
||||||
|
> This command will erase all data on the chosen disk. Make sure you partition the correct disk and that you've backed up anything important on it
|
||||||
|
|
||||||
|
The command to run the config is
|
||||||
|
```sh
|
||||||
|
sudo nix --experimental-features "nix-command flakes" \
|
||||||
|
run github:nix-community/disko -- \
|
||||||
|
--mode disko /tmp/disko.nix \
|
||||||
|
--arg device '"<YOUR DISK HERE>"' \
|
||||||
|
--arg swap-size '"<eg. 8G>"'
|
||||||
|
```
|
||||||
|
|
||||||
|
> [!NOTE]
|
||||||
|
> The swap size can be any number suffixed with the standard K,M,G for gigabytes and such.
|
||||||
|
|
||||||
|
During the installation you will be prompted for a password. This is the password used for unencrypting your disk every time you boot.
|
||||||
|
You will be prompted twice, once to lock it, and then again to unlock it.
|
||||||
|
|
||||||
|
The device will now be mounted on `/mnt` and should contain the following structure
|
||||||
|
- /persist
|
||||||
|
- /boot
|
||||||
|
- /nix
|
||||||
|
|
||||||
|
## Generate configuration
|
||||||
|
You need to generate the `hardware-configuration.nix` file for your system.
|
||||||
|
To do this run
|
||||||
|
|
||||||
|
```sh
|
||||||
|
sudo nixos-generate-config --no-filesystems --root /mnt
|
||||||
|
```
|
||||||
|
|
||||||
|
This will generate a folder called `/mnt/etc/nixos` with the hardware configuration file in it.
|
||||||
|
|
||||||
|
Next step is to move `hardware-configuration.nix` into `/tmp` and then clone the git repo to `/etc/nixos`
|
||||||
|
|
||||||
|
```sh
|
||||||
|
nix-shell -p git # For the git command
|
||||||
|
sudo mv /mnt/etc/nixos/hardware-configuration.nix /tmp # Move configuration away
|
||||||
|
sudo rm -rf /mnt/etc/nixos # Nuke config folder so we can clone
|
||||||
|
sudo git clone https://gitlab.com/SpoodyTheOne/nixos-config.git /mnt/etc/nixos # Clone config
|
||||||
|
```
|
||||||
|
|
||||||
|
## Configuring config
|
||||||
|
Start by replacing the bootstrap hosts hardware-configuration with your own
|
||||||
|
|
||||||
|
```sh
|
||||||
|
# Move hardware configuration
|
||||||
|
sudo mv /tmp/hardware-configuration.nix /mnt/etc/nixos/hosts/bootstrap
|
||||||
|
# go to /etc/nixos
|
||||||
|
cd /mnt/etc/nixos
|
||||||
|
# Add hardware configuration to git for nix to recognize it
|
||||||
|
sudo git add .
|
||||||
|
```
|
||||||
|
|
||||||
|
## Configure users
|
||||||
|
Go to `/mnt/etc/nixos/flake.nix` and change the config for the bootstrap host disko module to have the same settings you used for setting up your disk.
|
||||||
|
|
||||||
|
```sh
|
||||||
|
sudo vim /mnt/etc/nixos/flake.nix
|
||||||
|
```
|
||||||
|
|
||||||
|
## Install
|
||||||
|
Now that everything is configured run
|
||||||
|
|
||||||
|
```sh
|
||||||
|
# Copy configuration to permanent storage so its not nuked on reboot
|
||||||
|
sudo cp -r /mnt/etc/nixos /mnt/persist
|
||||||
|
sudo nixos-install --root /mnt --flake /mnt/etc/nixos#bootstrap
|
||||||
|
```
|
||||||
|
|
||||||
|
to install everything and then reboot.
|
||||||
|
|
||||||
|
## After reboot
|
||||||
|
After the reboot you will be prompted for your disk password. After inputting it the system will boot as normal.
|
||||||
|
|
||||||
|
Once booted log in using the user `bootstrap` and the password `1234`.
|
||||||
|
|
||||||
|
Next step, modify the bootstrap host configuration to enable impermanence and change the user and password. Then rebuild and reboot
|
||||||
|
|
||||||
|
```sh
|
||||||
|
cd /persist/nixos
|
||||||
|
sudo vim hosts/bootstrap/configuration.nix
|
||||||
|
```
|
||||||
|
|
||||||
|
in the config go to imports and uncomment this block
|
||||||
|
|
||||||
|
```nix
|
||||||
|
# UNCOMMENT AFTER REBOOT
|
||||||
|
# Delete unwanted files
|
||||||
|
# (import ../../modules/disko/delete-on-boot.nix {
|
||||||
|
# inherit lib;
|
||||||
|
# persistExtraDirectories = [ ];
|
||||||
|
# persistExtraFiles = [ ];
|
||||||
|
# })
|
||||||
|
```
|
||||||
|
|
||||||
|
Futher down in the file theres a line that says `users.users."bootstrap"`. Modify the string to your desired username and change the following lines in the user
|
||||||
|
|
||||||
|
```sh
|
||||||
|
# Generate a password and place the output in a file
|
||||||
|
mkpasswd > /tmp/passwd
|
||||||
|
```
|
||||||
|
Then in vim read the contenst of the password into the hashedPassword field
|
||||||
|
```vim
|
||||||
|
:read /tmp/passwd
|
||||||
|
```
|
||||||
|
|
||||||
|
The end result should look something like this
|
||||||
|
```diff
|
||||||
|
- initialPassword = "1234";
|
||||||
|
+ hashedPassword = "$y$j9T$TK08gB8eSmQdGaS2Gfiex/$L2moQMRxYDEiuEeql/MidoQhFBAJC1qnOTx7ChpAOtC"';
|
||||||
|
```
|
||||||
|
|
||||||
|
Move `/persist/nixos/` to `/etc/nixos` and rebuild. Then the installation will be done
|
||||||
|
|
||||||
|
```sh
|
||||||
|
sudo mv -r /persist/nixos /etc
|
||||||
|
```
|
||||||
|
|
||||||
|
Then rebuild
|
||||||
|
```sh
|
||||||
|
sudo nix-rebuild switch --flake /persist/nixos#bootstrap
|
||||||
|
reboot
|
||||||
|
```
|
||||||
|
|
||||||
|
Don't worry about all the errors that occur during the rebuild. This only happens the first time after switching to impermanence
|
||||||
|
|
||||||
|
# Post Installation
|
||||||
|
Once you've installed you're free to create a new host and modify it to your hearts content. You can base it off of my laptop host, it has a lot of nice things
|
||||||
|
|
||||||
|
My config includes an alias for rebuilding the system called `nix-rebuild` for fast iterations
|
||||||
|
|
||||||
|
# Update
|
||||||
|
In order to update the flake inputs simply run
|
||||||
|
|
||||||
|
```sh
|
||||||
|
cd /etc/nixos
|
||||||
|
nix flake update
|
||||||
|
```
|
747
flake.lock
Executable file
747
flake.lock
Executable file
|
@ -0,0 +1,747 @@
|
||||||
|
{
|
||||||
|
"nodes": {
|
||||||
|
"base16": {
|
||||||
|
"inputs": {
|
||||||
|
"fromYaml": "fromYaml"
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1732200724,
|
||||||
|
"narHash": "sha256-+R1BH5wHhfnycySb7Sy5KbYEaTJZWm1h+LW1OtyhiTs=",
|
||||||
|
"owner": "SenchoPens",
|
||||||
|
"repo": "base16.nix",
|
||||||
|
"rev": "153d52373b0fb2d343592871009a286ec8837aec",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "SenchoPens",
|
||||||
|
"repo": "base16.nix",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"base16-fish": {
|
||||||
|
"flake": false,
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1622559957,
|
||||||
|
"narHash": "sha256-PebymhVYbL8trDVVXxCvZgc0S5VxI7I1Hv4RMSquTpA=",
|
||||||
|
"owner": "tomyun",
|
||||||
|
"repo": "base16-fish",
|
||||||
|
"rev": "2f6dd973a9075dabccd26f1cded09508180bf5fe",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "tomyun",
|
||||||
|
"repo": "base16-fish",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"base16-helix": {
|
||||||
|
"flake": false,
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1725860795,
|
||||||
|
"narHash": "sha256-Z2o8VBPW3I+KKTSfe25kskz0EUj7MpUh8u355Z1nVsU=",
|
||||||
|
"owner": "tinted-theming",
|
||||||
|
"repo": "base16-helix",
|
||||||
|
"rev": "7f795bf75d38e0eea9fed287264067ca187b88a9",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "tinted-theming",
|
||||||
|
"repo": "base16-helix",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"base16-vim": {
|
||||||
|
"flake": false,
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1731949548,
|
||||||
|
"narHash": "sha256-XIDexXM66sSh5j/x70e054BnUsviibUShW7XhbDGhYo=",
|
||||||
|
"owner": "tinted-theming",
|
||||||
|
"repo": "base16-vim",
|
||||||
|
"rev": "61165b1632409bd55e530f3dbdd4477f011cadc6",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "tinted-theming",
|
||||||
|
"repo": "base16-vim",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"devshell": {
|
||||||
|
"inputs": {
|
||||||
|
"nixpkgs": [
|
||||||
|
"nixvim",
|
||||||
|
"nixpkgs"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1735644329,
|
||||||
|
"narHash": "sha256-tO3HrHriyLvipc4xr+Ewtdlo7wM1OjXNjlWRgmM7peY=",
|
||||||
|
"owner": "numtide",
|
||||||
|
"repo": "devshell",
|
||||||
|
"rev": "f7795ede5b02664b57035b3b757876703e2c3eac",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "numtide",
|
||||||
|
"repo": "devshell",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"disko": {
|
||||||
|
"inputs": {
|
||||||
|
"nixpkgs": [
|
||||||
|
"nixpkgs"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1736165297,
|
||||||
|
"narHash": "sha256-OT+sF4eNDFN/OdyUfIQwyp28+CFQL7PAdWn0wGU7F0U=",
|
||||||
|
"owner": "nix-community",
|
||||||
|
"repo": "disko",
|
||||||
|
"rev": "76816af65d5294761636a838917e335992a52e0c",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "nix-community",
|
||||||
|
"repo": "disko",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"flake-compat": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1696426674,
|
||||||
|
"narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=",
|
||||||
|
"rev": "0f9255e01c2351cc7d116c072cb317785dd33b33",
|
||||||
|
"revCount": 57,
|
||||||
|
"type": "tarball",
|
||||||
|
"url": "https://api.flakehub.com/f/pinned/edolstra/flake-compat/1.0.1/018afb31-abd1-7bff-a5e4-cff7e18efb7a/source.tar.gz"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"type": "tarball",
|
||||||
|
"url": "https://flakehub.com/f/edolstra/flake-compat/1.tar.gz"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"flake-compat_2": {
|
||||||
|
"flake": false,
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1696426674,
|
||||||
|
"narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=",
|
||||||
|
"owner": "edolstra",
|
||||||
|
"repo": "flake-compat",
|
||||||
|
"rev": "0f9255e01c2351cc7d116c072cb317785dd33b33",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "edolstra",
|
||||||
|
"repo": "flake-compat",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"flake-parts": {
|
||||||
|
"inputs": {
|
||||||
|
"nixpkgs-lib": [
|
||||||
|
"nixvim",
|
||||||
|
"nixpkgs"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1736143030,
|
||||||
|
"narHash": "sha256-+hu54pAoLDEZT9pjHlqL9DNzWz0NbUn8NEAHP7PQPzU=",
|
||||||
|
"owner": "hercules-ci",
|
||||||
|
"repo": "flake-parts",
|
||||||
|
"rev": "b905f6fc23a9051a6e1b741e1438dbfc0634c6de",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "hercules-ci",
|
||||||
|
"repo": "flake-parts",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"flake-utils": {
|
||||||
|
"inputs": {
|
||||||
|
"systems": "systems"
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1731533236,
|
||||||
|
"narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=",
|
||||||
|
"owner": "numtide",
|
||||||
|
"repo": "flake-utils",
|
||||||
|
"rev": "11707dc2f618dd54ca8739b309ec4fc024de578b",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "numtide",
|
||||||
|
"repo": "flake-utils",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"flake-utils_2": {
|
||||||
|
"inputs": {
|
||||||
|
"systems": [
|
||||||
|
"stylix",
|
||||||
|
"systems"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1731533236,
|
||||||
|
"narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=",
|
||||||
|
"owner": "numtide",
|
||||||
|
"repo": "flake-utils",
|
||||||
|
"rev": "11707dc2f618dd54ca8739b309ec4fc024de578b",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "numtide",
|
||||||
|
"repo": "flake-utils",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"fromYaml": {
|
||||||
|
"flake": false,
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1731966426,
|
||||||
|
"narHash": "sha256-lq95WydhbUTWig/JpqiB7oViTcHFP8Lv41IGtayokA8=",
|
||||||
|
"owner": "SenchoPens",
|
||||||
|
"repo": "fromYaml",
|
||||||
|
"rev": "106af9e2f715e2d828df706c386a685698f3223b",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "SenchoPens",
|
||||||
|
"repo": "fromYaml",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"git-hooks": {
|
||||||
|
"inputs": {
|
||||||
|
"flake-compat": [
|
||||||
|
"nixvim",
|
||||||
|
"flake-compat"
|
||||||
|
],
|
||||||
|
"gitignore": "gitignore",
|
||||||
|
"nixpkgs": [
|
||||||
|
"nixvim",
|
||||||
|
"nixpkgs"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1735882644,
|
||||||
|
"narHash": "sha256-3FZAG+pGt3OElQjesCAWeMkQ7C/nB1oTHLRQ8ceP110=",
|
||||||
|
"owner": "cachix",
|
||||||
|
"repo": "git-hooks.nix",
|
||||||
|
"rev": "a5a961387e75ae44cc20f0a57ae463da5e959656",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "cachix",
|
||||||
|
"repo": "git-hooks.nix",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"git-hooks_2": {
|
||||||
|
"inputs": {
|
||||||
|
"flake-compat": [
|
||||||
|
"stylix",
|
||||||
|
"flake-compat"
|
||||||
|
],
|
||||||
|
"gitignore": "gitignore_2",
|
||||||
|
"nixpkgs": [
|
||||||
|
"stylix",
|
||||||
|
"nixpkgs"
|
||||||
|
],
|
||||||
|
"nixpkgs-stable": [
|
||||||
|
"stylix",
|
||||||
|
"git-hooks",
|
||||||
|
"nixpkgs"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1731363552,
|
||||||
|
"narHash": "sha256-vFta1uHnD29VUY4HJOO/D6p6rxyObnf+InnSMT4jlMU=",
|
||||||
|
"owner": "cachix",
|
||||||
|
"repo": "git-hooks.nix",
|
||||||
|
"rev": "cd1af27aa85026ac759d5d3fccf650abe7e1bbf0",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "cachix",
|
||||||
|
"repo": "git-hooks.nix",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"gitignore": {
|
||||||
|
"inputs": {
|
||||||
|
"nixpkgs": [
|
||||||
|
"nixvim",
|
||||||
|
"git-hooks",
|
||||||
|
"nixpkgs"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1709087332,
|
||||||
|
"narHash": "sha256-HG2cCnktfHsKV0s4XW83gU3F57gaTljL9KNSuG6bnQs=",
|
||||||
|
"owner": "hercules-ci",
|
||||||
|
"repo": "gitignore.nix",
|
||||||
|
"rev": "637db329424fd7e46cf4185293b9cc8c88c95394",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "hercules-ci",
|
||||||
|
"repo": "gitignore.nix",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"gitignore_2": {
|
||||||
|
"inputs": {
|
||||||
|
"nixpkgs": [
|
||||||
|
"stylix",
|
||||||
|
"git-hooks",
|
||||||
|
"nixpkgs"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1709087332,
|
||||||
|
"narHash": "sha256-HG2cCnktfHsKV0s4XW83gU3F57gaTljL9KNSuG6bnQs=",
|
||||||
|
"owner": "hercules-ci",
|
||||||
|
"repo": "gitignore.nix",
|
||||||
|
"rev": "637db329424fd7e46cf4185293b9cc8c88c95394",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "hercules-ci",
|
||||||
|
"repo": "gitignore.nix",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"gnome-shell": {
|
||||||
|
"flake": false,
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1732369855,
|
||||||
|
"narHash": "sha256-JhUWbcYPjHO3Xs3x9/Z9RuqXbcp5yhPluGjwsdE2GMg=",
|
||||||
|
"owner": "GNOME",
|
||||||
|
"repo": "gnome-shell",
|
||||||
|
"rev": "dadd58f630eeea41d645ee225a63f719390829dc",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "GNOME",
|
||||||
|
"ref": "47.2",
|
||||||
|
"repo": "gnome-shell",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"home-manager": {
|
||||||
|
"inputs": {
|
||||||
|
"nixpkgs": [
|
||||||
|
"nixpkgs"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1736089250,
|
||||||
|
"narHash": "sha256-/LPWMiiJGPHGd7ZYEgmbE2da4zvBW0acmshUjYC3WG4=",
|
||||||
|
"owner": "nix-community",
|
||||||
|
"repo": "home-manager",
|
||||||
|
"rev": "172b91bfb2b7f5c4a8c6ceac29fd53a01ef07196",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "nix-community",
|
||||||
|
"repo": "home-manager",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"home-manager_2": {
|
||||||
|
"inputs": {
|
||||||
|
"nixpkgs": [
|
||||||
|
"nixvim",
|
||||||
|
"nixpkgs"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1736089250,
|
||||||
|
"narHash": "sha256-/LPWMiiJGPHGd7ZYEgmbE2da4zvBW0acmshUjYC3WG4=",
|
||||||
|
"owner": "nix-community",
|
||||||
|
"repo": "home-manager",
|
||||||
|
"rev": "172b91bfb2b7f5c4a8c6ceac29fd53a01ef07196",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "nix-community",
|
||||||
|
"repo": "home-manager",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"home-manager_3": {
|
||||||
|
"inputs": {
|
||||||
|
"nixpkgs": [
|
||||||
|
"stylix",
|
||||||
|
"nixpkgs"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1735774425,
|
||||||
|
"narHash": "sha256-C73gLFnEh8ZI0uDijUgCDWCd21T6I6tsaWgIBHcfAXg=",
|
||||||
|
"owner": "nix-community",
|
||||||
|
"repo": "home-manager",
|
||||||
|
"rev": "5f6aa268e419d053c3d5025da740e390b12ac936",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "nix-community",
|
||||||
|
"repo": "home-manager",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"impermanence": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1734945620,
|
||||||
|
"narHash": "sha256-olIfsfJK4/GFmPH8mXMmBDAkzVQ1TWJmeGT3wBGfQPY=",
|
||||||
|
"owner": "nix-community",
|
||||||
|
"repo": "impermanence",
|
||||||
|
"rev": "d000479f4f41390ff7cf9204979660ad5dd16176",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "nix-community",
|
||||||
|
"repo": "impermanence",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"ixx": {
|
||||||
|
"inputs": {
|
||||||
|
"flake-utils": [
|
||||||
|
"nixvim",
|
||||||
|
"nuschtosSearch",
|
||||||
|
"flake-utils"
|
||||||
|
],
|
||||||
|
"nixpkgs": [
|
||||||
|
"nixvim",
|
||||||
|
"nuschtosSearch",
|
||||||
|
"nixpkgs"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1729958008,
|
||||||
|
"narHash": "sha256-EiOq8jF4Z/zQe0QYVc3+qSKxRK//CFHMB84aYrYGwEs=",
|
||||||
|
"owner": "NuschtOS",
|
||||||
|
"repo": "ixx",
|
||||||
|
"rev": "9fd01aad037f345350eab2cd45e1946cc66da4eb",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "NuschtOS",
|
||||||
|
"ref": "v0.0.6",
|
||||||
|
"repo": "ixx",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nix-darwin": {
|
||||||
|
"inputs": {
|
||||||
|
"nixpkgs": [
|
||||||
|
"nixvim",
|
||||||
|
"nixpkgs"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1736085891,
|
||||||
|
"narHash": "sha256-bTl9fcUo767VaSx4Q5kFhwiDpFQhBKna7lNbGsqCQiA=",
|
||||||
|
"owner": "lnl7",
|
||||||
|
"repo": "nix-darwin",
|
||||||
|
"rev": "ba9b3173b0f642ada42b78fb9dfc37ca82266f6c",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "lnl7",
|
||||||
|
"repo": "nix-darwin",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nix-index-database": {
|
||||||
|
"inputs": {
|
||||||
|
"nixpkgs": [
|
||||||
|
"nixpkgs"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1736047960,
|
||||||
|
"narHash": "sha256-hutd85FA1jUJhhqBRRJ+u7UHO9oFGD/RVm2x5w8WjVQ=",
|
||||||
|
"owner": "nix-community",
|
||||||
|
"repo": "nix-index-database",
|
||||||
|
"rev": "816a6ae88774ba7e74314830546c29e134e0dffb",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "nix-community",
|
||||||
|
"repo": "nix-index-database",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nixpkgs": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1736012469,
|
||||||
|
"narHash": "sha256-/qlNWm/IEVVH7GfgAIyP6EsVZI6zjAx1cV5zNyrs+rI=",
|
||||||
|
"owner": "nixos",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"rev": "8f3e1f807051e32d8c95cd12b9b421623850a34d",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "nixos",
|
||||||
|
"ref": "nixos-unstable",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nixpkgs_2": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1735648875,
|
||||||
|
"narHash": "sha256-fQ4k/hyQiH9RRPznztsA9kbcDajvwV1sRm01el6Sr3c=",
|
||||||
|
"owner": "NixOS",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"rev": "47e29c20abef74c45322eca25ca1550cdf5c3b50",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "NixOS",
|
||||||
|
"ref": "nixos-unstable",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nixvim": {
|
||||||
|
"inputs": {
|
||||||
|
"devshell": "devshell",
|
||||||
|
"flake-compat": "flake-compat",
|
||||||
|
"flake-parts": "flake-parts",
|
||||||
|
"git-hooks": "git-hooks",
|
||||||
|
"home-manager": "home-manager_2",
|
||||||
|
"nix-darwin": "nix-darwin",
|
||||||
|
"nixpkgs": [
|
||||||
|
"nixpkgs"
|
||||||
|
],
|
||||||
|
"nuschtosSearch": "nuschtosSearch",
|
||||||
|
"treefmt-nix": "treefmt-nix"
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1736157655,
|
||||||
|
"narHash": "sha256-/ggXMK8Q/rN94kaaSHPtEcf4SPKgPXfzSbDgAR6Odzs=",
|
||||||
|
"owner": "nix-community",
|
||||||
|
"repo": "nixvim",
|
||||||
|
"rev": "31139e0605fd886d981e0a197e30ceac4b859d6e",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "nix-community",
|
||||||
|
"repo": "nixvim",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nuschtosSearch": {
|
||||||
|
"inputs": {
|
||||||
|
"flake-utils": "flake-utils",
|
||||||
|
"ixx": "ixx",
|
||||||
|
"nixpkgs": [
|
||||||
|
"nixvim",
|
||||||
|
"nixpkgs"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1735854821,
|
||||||
|
"narHash": "sha256-Iv59gMDZajNfezTO0Fw6LHE7uKAShxbvMidmZREit7c=",
|
||||||
|
"owner": "NuschtOS",
|
||||||
|
"repo": "search",
|
||||||
|
"rev": "836908e3bddd837ae0f13e215dd48767aee355f0",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "NuschtOS",
|
||||||
|
"repo": "search",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"root": {
|
||||||
|
"inputs": {
|
||||||
|
"disko": "disko",
|
||||||
|
"home-manager": "home-manager",
|
||||||
|
"impermanence": "impermanence",
|
||||||
|
"nix-index-database": "nix-index-database",
|
||||||
|
"nixpkgs": "nixpkgs",
|
||||||
|
"nixvim": "nixvim",
|
||||||
|
"stylix": "stylix",
|
||||||
|
"zen-browser": "zen-browser"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"stylix": {
|
||||||
|
"inputs": {
|
||||||
|
"base16": "base16",
|
||||||
|
"base16-fish": "base16-fish",
|
||||||
|
"base16-helix": "base16-helix",
|
||||||
|
"base16-vim": "base16-vim",
|
||||||
|
"flake-compat": "flake-compat_2",
|
||||||
|
"flake-utils": "flake-utils_2",
|
||||||
|
"git-hooks": "git-hooks_2",
|
||||||
|
"gnome-shell": "gnome-shell",
|
||||||
|
"home-manager": "home-manager_3",
|
||||||
|
"nixpkgs": "nixpkgs_2",
|
||||||
|
"systems": "systems_2",
|
||||||
|
"tinted-foot": "tinted-foot",
|
||||||
|
"tinted-kitty": "tinted-kitty",
|
||||||
|
"tinted-tmux": "tinted-tmux",
|
||||||
|
"tinted-zed": "tinted-zed"
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1736176887,
|
||||||
|
"narHash": "sha256-XacDv8TFEcqaZlfsRqNFUCgca7Xv3SQtzrXon8oEhVo=",
|
||||||
|
"owner": "danth",
|
||||||
|
"repo": "stylix",
|
||||||
|
"rev": "b47ef3b8560c3921404d72cec95d84632e355e01",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "danth",
|
||||||
|
"repo": "stylix",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"systems": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1681028828,
|
||||||
|
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
|
||||||
|
"owner": "nix-systems",
|
||||||
|
"repo": "default",
|
||||||
|
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "nix-systems",
|
||||||
|
"repo": "default",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"systems_2": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1681028828,
|
||||||
|
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
|
||||||
|
"owner": "nix-systems",
|
||||||
|
"repo": "default",
|
||||||
|
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "nix-systems",
|
||||||
|
"repo": "default",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"tinted-foot": {
|
||||||
|
"flake": false,
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1726913040,
|
||||||
|
"narHash": "sha256-+eDZPkw7efMNUf3/Pv0EmsidqdwNJ1TaOum6k7lngDQ=",
|
||||||
|
"owner": "tinted-theming",
|
||||||
|
"repo": "tinted-foot",
|
||||||
|
"rev": "fd1b924b6c45c3e4465e8a849e67ea82933fcbe4",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "tinted-theming",
|
||||||
|
"repo": "tinted-foot",
|
||||||
|
"rev": "fd1b924b6c45c3e4465e8a849e67ea82933fcbe4",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"tinted-kitty": {
|
||||||
|
"flake": false,
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1716423189,
|
||||||
|
"narHash": "sha256-2xF3sH7UIwegn+2gKzMpFi3pk5DlIlM18+vj17Uf82U=",
|
||||||
|
"owner": "tinted-theming",
|
||||||
|
"repo": "tinted-kitty",
|
||||||
|
"rev": "eb39e141db14baef052893285df9f266df041ff8",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "tinted-theming",
|
||||||
|
"repo": "tinted-kitty",
|
||||||
|
"rev": "eb39e141db14baef052893285df9f266df041ff8",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"tinted-tmux": {
|
||||||
|
"flake": false,
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1729501581,
|
||||||
|
"narHash": "sha256-1ohEFMC23elnl39kxWnjzH1l2DFWWx4DhFNNYDTYt54=",
|
||||||
|
"owner": "tinted-theming",
|
||||||
|
"repo": "tinted-tmux",
|
||||||
|
"rev": "f0e7f7974a6441033eb0a172a0342e96722b4f14",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "tinted-theming",
|
||||||
|
"repo": "tinted-tmux",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"tinted-zed": {
|
||||||
|
"flake": false,
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1725758778,
|
||||||
|
"narHash": "sha256-8P1b6mJWyYcu36WRlSVbuj575QWIFZALZMTg5ID/sM4=",
|
||||||
|
"owner": "tinted-theming",
|
||||||
|
"repo": "base16-zed",
|
||||||
|
"rev": "122c9e5c0e6f27211361a04fae92df97940eccf9",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "tinted-theming",
|
||||||
|
"repo": "base16-zed",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"treefmt-nix": {
|
||||||
|
"inputs": {
|
||||||
|
"nixpkgs": [
|
||||||
|
"nixvim",
|
||||||
|
"nixpkgs"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1736115332,
|
||||||
|
"narHash": "sha256-FBG9d7e0BTFfxVdw4b5EmNll2Mv7hfRc54hbB4LrKko=",
|
||||||
|
"owner": "numtide",
|
||||||
|
"repo": "treefmt-nix",
|
||||||
|
"rev": "1788ca5acd4b542b923d4757d4cfe4183cc6a92d",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "numtide",
|
||||||
|
"repo": "treefmt-nix",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"zen-browser": {
|
||||||
|
"inputs": {
|
||||||
|
"nixpkgs": [
|
||||||
|
"nixpkgs"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1727721329,
|
||||||
|
"narHash": "sha256-QYlWZwUSwrM7BuO+dXclZIwoPvBIuJr6GpFKv9XKFPI=",
|
||||||
|
"owner": "MarceColl",
|
||||||
|
"repo": "zen-browser-flake",
|
||||||
|
"rev": "e6ab73f405e9a2896cce5956c549a9cc359e5fcc",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "MarceColl",
|
||||||
|
"repo": "zen-browser-flake",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"root": "root",
|
||||||
|
"version": 7
|
||||||
|
}
|
153
flake.nix
Executable file
153
flake.nix
Executable file
|
@ -0,0 +1,153 @@
|
||||||
|
{
|
||||||
|
description = "Nixos configuration flake";
|
||||||
|
|
||||||
|
inputs = {
|
||||||
|
nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
|
||||||
|
|
||||||
|
# neorg-overlay.url = "github:nvim-neorg/nixpkgs-neorg-overlay";
|
||||||
|
|
||||||
|
stylix = {
|
||||||
|
url = "github:danth/stylix";
|
||||||
|
# inputs.nixpkgs.follows = "nixpkgs";
|
||||||
|
};
|
||||||
|
|
||||||
|
zen-browser = {
|
||||||
|
url = "github:MarceColl/zen-browser-flake";
|
||||||
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
|
};
|
||||||
|
|
||||||
|
nixvim = {
|
||||||
|
url = "github:nix-community/nixvim";
|
||||||
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
|
};
|
||||||
|
|
||||||
|
disko = {
|
||||||
|
url = "github:nix-community/disko";
|
||||||
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
|
};
|
||||||
|
|
||||||
|
impermanence = {
|
||||||
|
url = "github:nix-community/impermanence";
|
||||||
|
};
|
||||||
|
|
||||||
|
home-manager = {
|
||||||
|
url = "github:nix-community/home-manager";
|
||||||
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
|
};
|
||||||
|
|
||||||
|
nix-index-database = {
|
||||||
|
url = "github:nix-community/nix-index-database";
|
||||||
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
|
};
|
||||||
|
|
||||||
|
# hyprland.url = "github:hyprwm/Hyprland";
|
||||||
|
#
|
||||||
|
# hyprfocus = {
|
||||||
|
# url = "github:pyt0xic/hyprfocus";
|
||||||
|
# inputs.hyprland.follows = "hyprland";
|
||||||
|
# };
|
||||||
|
#
|
||||||
|
# hyprland-plugins = {
|
||||||
|
# url = "github:hyprwm/hyprland-plugins";
|
||||||
|
# inputs.hyprland.follows = "hyprland";
|
||||||
|
# };
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
outputs = { self, nixpkgs, ... } @ inputs:
|
||||||
|
let
|
||||||
|
system = "x86_64-linux";
|
||||||
|
pkgs = import nixpkgs { inherit system; overlays = []; };
|
||||||
|
in
|
||||||
|
{
|
||||||
|
nixosConfigurations = {
|
||||||
|
|
||||||
|
bootstrap = nixpkgs.lib.nixosSystem {
|
||||||
|
specialArgs = {
|
||||||
|
inherit inputs;
|
||||||
|
};
|
||||||
|
modules = [
|
||||||
|
inputs.disko.nixosModules.default
|
||||||
|
(import ./modules/disko/disko-luks.nix { device = "/dev/nvme0n1"; swap-size = "8G"; encrypted = false; })
|
||||||
|
|
||||||
|
./hosts/bootstrap/configuration.nix
|
||||||
|
|
||||||
|
inputs.impermanence.nixosModules.impermanence
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
desktop = nixpkgs.lib.nixosSystem {
|
||||||
|
specialArgs = {
|
||||||
|
inherit inputs;
|
||||||
|
};
|
||||||
|
modules = [
|
||||||
|
inputs.disko.nixosModules.default
|
||||||
|
(import ./modules/disko/disko-luks.nix { device = "/dev/nvme0n1"; swap-size = "8G"; encrypted = false; })
|
||||||
|
|
||||||
|
./hosts/desktop/configuration.nix
|
||||||
|
|
||||||
|
inputs.impermanence.nixosModules.impermanence
|
||||||
|
inputs.home-manager.nixosModules.default
|
||||||
|
inputs.nixvim.nixosModules.nixvim
|
||||||
|
inputs.stylix.nixosModules.stylix
|
||||||
|
|
||||||
|
inputs.nix-index-database.nixosModules.nix-index
|
||||||
|
{ programs.nix-index-database.comma.enable = true; }
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
nixos-vm = nixpkgs.lib.nixosSystem {
|
||||||
|
specialArgs = {
|
||||||
|
inherit inputs;
|
||||||
|
};
|
||||||
|
modules = [
|
||||||
|
inputs.disko.nixosModules.default
|
||||||
|
(import ./hosts/nixos-vm/disko-luks.nix { device = "/dev/vda"; })
|
||||||
|
|
||||||
|
./hosts/nixos-vm/configuration.nix
|
||||||
|
|
||||||
|
inputs.impermanence.nixosModules.impermanence
|
||||||
|
inputs.home-manager.nixosModules.default
|
||||||
|
inputs.nixvim.nixosModules.nixvim
|
||||||
|
inputs.stylix.nixosModules.stylix
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
laptop = nixpkgs.lib.nixosSystem {
|
||||||
|
specialArgs = {
|
||||||
|
inherit inputs;
|
||||||
|
};
|
||||||
|
modules = [
|
||||||
|
inputs.disko.nixosModules.default
|
||||||
|
(import ./modules/disko/disko-luks.nix { device = "/dev/sda"; swap-size = "32G"; encrypted = true; })
|
||||||
|
|
||||||
|
./hosts/laptop/configuration.nix
|
||||||
|
|
||||||
|
inputs.impermanence.nixosModules.impermanence
|
||||||
|
inputs.home-manager.nixosModules.default
|
||||||
|
inputs.nixvim.nixosModules.nixvim
|
||||||
|
inputs.stylix.nixosModules.stylix
|
||||||
|
|
||||||
|
inputs.nix-index-database.nixosModules.nix-index
|
||||||
|
{ programs.nix-index-database.comma.enable = true; }
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
templates = {
|
||||||
|
|
||||||
|
dotnet = {
|
||||||
|
path = ./templates/dotnet;
|
||||||
|
description = "Flake for programming in dotnet";
|
||||||
|
};
|
||||||
|
|
||||||
|
latex = {
|
||||||
|
path = ./templates/latex;
|
||||||
|
description = "Flake for creating latex documents";
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
};
|
||||||
|
}
|
84
hosts/bootstrap/configuration.nix
Executable file
84
hosts/bootstrap/configuration.nix
Executable file
|
@ -0,0 +1,84 @@
|
||||||
|
# Edit this configuration file to define what should be installed on
|
||||||
|
# your system. Help is available in the configuration.nix(5) man page, on
|
||||||
|
# https://search.nixos.org/options and in the NixOS manual (`nixos-help`).
|
||||||
|
|
||||||
|
{ config, lib, pkgs, inputs, ... }:
|
||||||
|
{
|
||||||
|
# This is where you specify all .nix files to import
|
||||||
|
imports =
|
||||||
|
[
|
||||||
|
# Hardware configuration that you generated in earlier steps
|
||||||
|
./hardware-configuration.nix
|
||||||
|
|
||||||
|
(import ../../modules/disko/delete-on-boot.nix {
|
||||||
|
inherit lib;
|
||||||
|
persistExtraDirectories = [ ];
|
||||||
|
persistExtraFiles = [ ];
|
||||||
|
users = {};
|
||||||
|
})
|
||||||
|
];
|
||||||
|
|
||||||
|
# Use the systemd-boot EFI boot loader.
|
||||||
|
boot.loader.systemd-boot.enable = true;
|
||||||
|
boot.loader.efi.canTouchEfiVariables = true;
|
||||||
|
boot.loader.timeout = 0;
|
||||||
|
|
||||||
|
nix.settings.experimental-features = [ "nix-command" "flakes" ];
|
||||||
|
|
||||||
|
# System wide packages goes here
|
||||||
|
environment.systemPackages = with pkgs; [
|
||||||
|
git
|
||||||
|
vim
|
||||||
|
];
|
||||||
|
|
||||||
|
users.users."snorre" = {
|
||||||
|
isNormalUser = true;
|
||||||
|
|
||||||
|
# Unsafe and resets every boot, use hashedPassword after installation
|
||||||
|
initialPassword = "1234";
|
||||||
|
# hashedPassword = "Generate hash with `mkpasswd` and place result here";
|
||||||
|
|
||||||
|
extraGroups = [
|
||||||
|
"networkmanager"
|
||||||
|
"audio"
|
||||||
|
"wheel" # Allows this user to use `sudo`
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
networking.hostName = "bootstrap"; # Define your hostname.
|
||||||
|
networking.networkmanager.enable = true; # Easiest to use and most distros use this by default.
|
||||||
|
|
||||||
|
# Ssh configuration here
|
||||||
|
services.openssh = {
|
||||||
|
enable = false; # Set to true to allow ssh connections
|
||||||
|
settings = {
|
||||||
|
# Require public key authentication
|
||||||
|
# Set to true to allow connecting with username+password
|
||||||
|
PasswordAuthentication = false;
|
||||||
|
KbdInteractiveAuthentication = false;
|
||||||
|
# Users who can be connected to from ssh. Set to null to allow all users
|
||||||
|
AllowUsers = null;
|
||||||
|
# Disallow ssh connections to root user. DONT ENABLE THIS
|
||||||
|
PermitRootLogin = "no";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
# This option defines the first version of NixOS you have installed on this particular machine,
|
||||||
|
# and is used to maintain compatibility with application data (e.g. databases) created on older NixOS versions.
|
||||||
|
#
|
||||||
|
# Most users should NEVER change this value after the initial install, for any reason,
|
||||||
|
# even if you've upgraded your system to a new NixOS release.
|
||||||
|
#
|
||||||
|
# This value does NOT affect the Nixpkgs version your packages and OS are pulled from,
|
||||||
|
# so changing it will NOT upgrade your system.
|
||||||
|
#
|
||||||
|
# This value being lower than the current NixOS release does NOT mean your system is
|
||||||
|
# out of date, out of support, or vulnerable.
|
||||||
|
#
|
||||||
|
# Do NOT change this value unless you have manually inspected all the changes it would make to your configuration,
|
||||||
|
# and migrated your data accordingly.
|
||||||
|
#
|
||||||
|
# For more information, see `man configuration.nix` or https://nixos.org/manual/nixos/stable/options#opt-system.stateVersion .
|
||||||
|
system.stateVersion = "23.11"; # Did you read the comment?
|
||||||
|
|
||||||
|
}
|
26
hosts/bootstrap/hardware-configuration.nix
Normal file
26
hosts/bootstrap/hardware-configuration.nix
Normal file
|
@ -0,0 +1,26 @@
|
||||||
|
# Do not modify this file! It was generated by ‘nixos-generate-config’
|
||||||
|
# and may be overwritten by future invocations. Please make changes
|
||||||
|
# to /etc/nixos/configuration.nix instead.
|
||||||
|
{ config, lib, pkgs, modulesPath, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
imports =
|
||||||
|
[ (modulesPath + "/installer/scan/not-detected.nix")
|
||||||
|
];
|
||||||
|
|
||||||
|
boot.initrd.availableKernelModules = [ "xhci_pci" "ahci" "nvme" "usb_storage" "usbhid" "sd_mod" ];
|
||||||
|
boot.initrd.kernelModules = [ ];
|
||||||
|
boot.kernelModules = [ "kvm-amd" ];
|
||||||
|
boot.extraModulePackages = [ ];
|
||||||
|
|
||||||
|
# Enables DHCP on each ethernet and wireless interface. In case of scripted networking
|
||||||
|
# (the default) this is the recommended approach. When using systemd-networkd it's
|
||||||
|
# still possible to use this option, but it's recommended to use it in conjunction
|
||||||
|
# with explicit per-interface declarations with `networking.interfaces.<interface>.useDHCP`.
|
||||||
|
networking.useDHCP = lib.mkDefault true;
|
||||||
|
# networking.interfaces.enp8s0.useDHCP = lib.mkDefault true;
|
||||||
|
# networking.interfaces.wlp7s0.useDHCP = lib.mkDefault true;
|
||||||
|
|
||||||
|
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
|
||||||
|
hardware.cpu.amd.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
|
||||||
|
}
|
415
hosts/desktop/configuration.nix
Executable file
415
hosts/desktop/configuration.nix
Executable file
|
@ -0,0 +1,415 @@
|
||||||
|
# Edit this configuration file to define what should be installed on
|
||||||
|
# your system. Help is available in the configuration.nix(5) man page, on
|
||||||
|
# https://search.nixos.org/options and in the NixOS manual (`nixos-help`).
|
||||||
|
|
||||||
|
{ config, lib, pkgs, inputs, ... }:
|
||||||
|
let
|
||||||
|
persistence = {
|
||||||
|
"snorre" = import ./persist.nix;
|
||||||
|
};
|
||||||
|
in
|
||||||
|
{
|
||||||
|
imports =
|
||||||
|
[
|
||||||
|
# Include the results of the hardware scan.
|
||||||
|
./hardware-configuration.nix
|
||||||
|
# ../../modules/drivers/nvidia.nix
|
||||||
|
../../modules/plymouth/blahaj.nix
|
||||||
|
|
||||||
|
(import ../../modules/disko/delete-on-boot.nix {
|
||||||
|
inherit lib;
|
||||||
|
persistExtraDirectories = [ ];
|
||||||
|
persistExtraFiles = [ ];
|
||||||
|
users = persistence;
|
||||||
|
})
|
||||||
|
# ../../modules/plymouth
|
||||||
|
#../../modules/users/main-user.nix
|
||||||
|
];
|
||||||
|
|
||||||
|
# Use the systemd-boot EFI boot loader.
|
||||||
|
boot.loader.systemd-boot.enable = true;
|
||||||
|
boot.loader.efi.canTouchEfiVariables = true;
|
||||||
|
boot.loader.timeout = 0;
|
||||||
|
|
||||||
|
boot.kernelPackages = pkgs.linuxPackages_zen;
|
||||||
|
|
||||||
|
# boot.plymouth.enable = true;
|
||||||
|
# boot.plymouth.theme = "nixos-bgrt";
|
||||||
|
# boot.plymouth.themePackages = [
|
||||||
|
# pkgs.nixos-bgrt-plymouth
|
||||||
|
# ];
|
||||||
|
|
||||||
|
programs.nix-ld.enable = true;
|
||||||
|
# programs.nix-ld.libraries = with pkgs; [
|
||||||
|
# # Add any missing dynamic libraries for unpackaged programs
|
||||||
|
# # here, NOT in environment.systemPackages
|
||||||
|
# ];
|
||||||
|
|
||||||
|
boot.consoleLogLevel = 0;
|
||||||
|
boot.initrd.verbose = false;
|
||||||
|
boot.kernelParams = [
|
||||||
|
"i915.fastboot=1"
|
||||||
|
"preempt=full"
|
||||||
|
"quiet"
|
||||||
|
"splash"
|
||||||
|
# "boot.shell_on_fail"
|
||||||
|
"loglevel=3"
|
||||||
|
# "rd.systemd.show_status=false"
|
||||||
|
# "rd.udev.log_level=3"
|
||||||
|
|
||||||
|
# "udev.log_priority=3"
|
||||||
|
];
|
||||||
|
|
||||||
|
nix.settings.experimental-features = [ "nix-command" "flakes" ];
|
||||||
|
|
||||||
|
home-manager = {
|
||||||
|
extraSpecialArgs = { inherit inputs; };
|
||||||
|
users = {
|
||||||
|
"snorre" = import ./home.nix;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
# fonts.packages = with pkgs; [
|
||||||
|
# (nerdfonts.override {
|
||||||
|
# fonts = [
|
||||||
|
# "Devicons"config
|
||||||
|
# ];
|
||||||
|
# })
|
||||||
|
# ];
|
||||||
|
|
||||||
|
programs.localsend.openFirewall = true;
|
||||||
|
|
||||||
|
virtualisation.libvirtd.enable = true;
|
||||||
|
programs.virt-manager.enable = true;
|
||||||
|
|
||||||
|
programs.steam = {
|
||||||
|
enable = true;
|
||||||
|
gamescopeSession.enable = false;
|
||||||
|
};
|
||||||
|
|
||||||
|
security.chromiumSuidSandbox.enable = true; # unity3d.enable was only to allow chrome root sandboxxing
|
||||||
|
programs.adb.enable = true;
|
||||||
|
|
||||||
|
# nixos loves its files. So much that it opens more than 8000 of them at times. Lets increase the limit
|
||||||
|
# security.pam.loginLimits = [{
|
||||||
|
# domain = "*";
|
||||||
|
# type = "soft";
|
||||||
|
# item = "nofile";
|
||||||
|
# value = "65536";
|
||||||
|
# }];
|
||||||
|
|
||||||
|
users.users."snorre" = {
|
||||||
|
isNormalUser = true;
|
||||||
|
hashedPassword = "$y$j9T$L2udHOsjFhnZpksLamKec/$IwNrtR9YCSx8eIau5VD3todAqFkfvSL9ONiEQNiGV.9";
|
||||||
|
extraGroups = [
|
||||||
|
"networkmanager"
|
||||||
|
"audio"
|
||||||
|
"wheel"
|
||||||
|
"adbusers"
|
||||||
|
"libvirtd"
|
||||||
|
];
|
||||||
|
|
||||||
|
# openssh.authorizedKeys.keyFiles = [
|
||||||
|
# ./ssh/authorized_keys_snorre
|
||||||
|
# ];
|
||||||
|
|
||||||
|
shell = pkgs.zsh;
|
||||||
|
};
|
||||||
|
|
||||||
|
# Programs to enable
|
||||||
|
# programs.zsh.enable = true; # Better shell than bash
|
||||||
|
programs.zsh = {
|
||||||
|
enable = true;
|
||||||
|
# This prevents cache invalidation when also managing zsh from home-manager,
|
||||||
|
# leading to faster startup times
|
||||||
|
enableGlobalCompInit = false;
|
||||||
|
};
|
||||||
|
programs.hyprland = {
|
||||||
|
# Hyprland desktop environment
|
||||||
|
enable = true;
|
||||||
|
portalPackage = pkgs.xdg-desktop-portal-hyprland;
|
||||||
|
};
|
||||||
|
|
||||||
|
programs.ssh.startAgent = true; # ssh-agent for interacting with github
|
||||||
|
# security.chromiumSuidSandbox.enable = true; # unity3d.enable was only to allow chrome root sandboxxing
|
||||||
|
# programs.noisetorch.enable = true; # Noisetorch because discord krisp doesnt work
|
||||||
|
|
||||||
|
# Fuck nano, all my homies hate nano
|
||||||
|
programs.nano.enable = false;
|
||||||
|
|
||||||
|
# I want my steams and other non-libre software
|
||||||
|
nixpkgs.config.allowUnfree = true;
|
||||||
|
|
||||||
|
# List packages installed in system profile. To search, run:
|
||||||
|
# $ nix search wget
|
||||||
|
environment.systemPackages = with pkgs; [
|
||||||
|
wget
|
||||||
|
curl
|
||||||
|
git
|
||||||
|
# ranger
|
||||||
|
|
||||||
|
# libsecret manager
|
||||||
|
# pass-secret-service
|
||||||
|
keepassxc
|
||||||
|
libsecret
|
||||||
|
|
||||||
|
# ((drv: pkgs.symlinkJoin {
|
||||||
|
# name = drv.name;
|
||||||
|
# paths = [ drv ];
|
||||||
|
# postBuild = "rm -rf $out/share/applications";
|
||||||
|
# }) pkgs.neovim)
|
||||||
|
|
||||||
|
neovim
|
||||||
|
|
||||||
|
# graphics
|
||||||
|
mesa
|
||||||
|
|
||||||
|
# Notifications
|
||||||
|
libnotify
|
||||||
|
|
||||||
|
# For enabling and styling QT
|
||||||
|
libsForQt5.qtstyleplugin-kvantum
|
||||||
|
libsForQt5.qt5ct
|
||||||
|
catppuccin-kvantum
|
||||||
|
|
||||||
|
# Gnome keyring makes it so we dont have to keep logging into programs
|
||||||
|
gnome-keyring
|
||||||
|
# Ui for when programs want sudo
|
||||||
|
polkit-kde-agent
|
||||||
|
];
|
||||||
|
|
||||||
|
programs.gamemode = {
|
||||||
|
enable = true;
|
||||||
|
enableRenice = true;
|
||||||
|
|
||||||
|
settings = {
|
||||||
|
general = {
|
||||||
|
renice = 3;
|
||||||
|
};
|
||||||
|
|
||||||
|
custom = {
|
||||||
|
# start = "${pkgs.libnotify}/bin/notify-send 'GameMode started'";
|
||||||
|
# end = "${pkgs.libnotify}/bin/notify-send 'GameMode ended'";
|
||||||
|
|
||||||
|
start =
|
||||||
|
let
|
||||||
|
script = pkgs.writeScriptBin "gamemode_start.sh" ''
|
||||||
|
${pkgs.libnotify}/bin/notify-send "GameMode started"
|
||||||
|
${pkgs.libnotify}/bin/notify-send "user is: $USER"
|
||||||
|
/home/$USER/.nix-profile/bin/hyprctl keyword input:touchpad:disable_while_typing false
|
||||||
|
'';
|
||||||
|
in
|
||||||
|
"${script}/bin/gamemode_start.sh";
|
||||||
|
|
||||||
|
end =
|
||||||
|
let
|
||||||
|
script = pkgs.writeScriptBin "gamemode_end.sh" ''
|
||||||
|
${pkgs.libnotify}/bin/notify-send "GameMode end"
|
||||||
|
/home/$USER/.nix-profile/bin/hyprctl keyword input:touchpad:disable_while_typing true
|
||||||
|
'';
|
||||||
|
in
|
||||||
|
"${script}/bin/gamemode_end.sh";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
# Session variables for qt and hyprland
|
||||||
|
environment.sessionVariables = {
|
||||||
|
XDG_CURRENT_DESKTOP = "Hyprland";
|
||||||
|
XDG_SESSION_DESKTOP = "Hyprland";
|
||||||
|
XDG_SESSION_TYPE = "wayland";
|
||||||
|
GDK_BACKEND = "wayland";
|
||||||
|
GTK_USE_PORTAL = "1";
|
||||||
|
QT_QPA_PLATFORMTHEME = "qt5ct";
|
||||||
|
QT_QPA_PLATFORM = "wayland";
|
||||||
|
QT_WAYLAND_DISABLE_WINDOWDECORATION = "1";
|
||||||
|
QT_AUTO_SCREEN_SCALE_FACTOR = "0";
|
||||||
|
MOZ_ENABLE_WAYLAND = "1";
|
||||||
|
# SSH_AUTH_SOCK = "$XDG_RUNTIME_DIR/ssh-agent";
|
||||||
|
};
|
||||||
|
|
||||||
|
xdg.portal = {
|
||||||
|
enable = true;
|
||||||
|
wlr.enable = true;
|
||||||
|
extraPortals = [
|
||||||
|
pkgs.xdg-desktop-portal-gtk
|
||||||
|
(pkgs.callPackage ../../modules/portals/xdg-desktop-portal-termfilechooser.nix { })
|
||||||
|
];
|
||||||
|
# xdgOpenUsePortal = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
qt = {
|
||||||
|
enable = true;
|
||||||
|
platformTheme = "qt5ct";
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
# Delete old entries to
|
||||||
|
nix = {
|
||||||
|
gc = {
|
||||||
|
automatic = true;
|
||||||
|
options = "--delete-older-than 30d";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
stylix.base16Scheme = "${pkgs.base16-schemes}/share/themes/gruvbox-material-dark-soft.yaml";
|
||||||
|
stylix.autoEnable = true;
|
||||||
|
stylix.polarity = "dark";
|
||||||
|
|
||||||
|
# stylix.cursor.package = ( pkgs.callPackage ../../modules/stylix/cursors/posy-improved {} );
|
||||||
|
# stylix.cursor.name = "Posy_Cursor";
|
||||||
|
|
||||||
|
stylix.cursor.package = pkgs.bibata-cursors;
|
||||||
|
stylix.cursor.name = "Bibata-Modern-Ice";
|
||||||
|
stylix.cursor.size = 24;
|
||||||
|
|
||||||
|
stylix.image = ./nixos-wallpaper.png;
|
||||||
|
|
||||||
|
networking.hostName = "desktop"; # Define your hostname.
|
||||||
|
networking.networkmanager.enable = true; # Easiest to use and most distros use this by default.
|
||||||
|
networking.networkmanager.wifi.powersave = true;
|
||||||
|
networking.firewall = {
|
||||||
|
enable = true;
|
||||||
|
allowedTCPPorts = [ 8000 ];
|
||||||
|
allowedUDPPortRanges = [
|
||||||
|
{ from = 8000; to = 8010; }
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
# Fuck off, i wanna boot
|
||||||
|
systemd.services."NetworkManager-wait-online".enable = false;
|
||||||
|
|
||||||
|
# Set your time zone.
|
||||||
|
time.timeZone = "Europe/Copenhagen";
|
||||||
|
|
||||||
|
# Select internationalisation properties.
|
||||||
|
i18n.defaultLocale = "en_US.UTF-8";
|
||||||
|
# console = {
|
||||||
|
# keyMap = "dk";
|
||||||
|
# };
|
||||||
|
|
||||||
|
# Remove message when running commands as sudo
|
||||||
|
security.sudo = {
|
||||||
|
enable = true;
|
||||||
|
extraConfig = ''
|
||||||
|
Defaults lecture = never
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
services.blueman = {
|
||||||
|
enable = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
virtualisation.docker = {
|
||||||
|
enable = true;
|
||||||
|
storageDriver = "btrfs";
|
||||||
|
};
|
||||||
|
|
||||||
|
hardware.bluetooth.enable = true;
|
||||||
|
hardware.bluetooth.powerOnBoot = false;
|
||||||
|
hardware.bluetooth.settings = {
|
||||||
|
General = {
|
||||||
|
Experimental = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
hardware.graphics = {
|
||||||
|
enable = true;
|
||||||
|
extraPackages = with pkgs; [
|
||||||
|
intel-media-driver # LIBVA_DRIVER_NAME=iHD
|
||||||
|
intel-vaapi-driver # LIBVA_DRIVER_NAME=i965 (older but works better for Firefox/Chromium)
|
||||||
|
libvdpau-va-gl
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
services.pipewire = {
|
||||||
|
enable = true;
|
||||||
|
audio.enable = true;
|
||||||
|
alsa.enable = true;
|
||||||
|
pulse.enable = true;
|
||||||
|
wireplumber.enable = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
# Some programs need SUID wrappers, can be configured further or are
|
||||||
|
# started in user sessions.
|
||||||
|
programs.mtr.enable = true;
|
||||||
|
programs.gnupg.agent = {
|
||||||
|
enable = true;
|
||||||
|
# enableSSHSupport = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
# services.power-profiles-daemon = {
|
||||||
|
# enable = true;
|
||||||
|
# };
|
||||||
|
services.auto-cpufreq = {
|
||||||
|
enable = true;
|
||||||
|
settings = {
|
||||||
|
charger = {
|
||||||
|
governor = "performance";
|
||||||
|
turbo = "auto";
|
||||||
|
};
|
||||||
|
|
||||||
|
battery = {
|
||||||
|
governor = "powersave";
|
||||||
|
energy_performance_preference = "power";
|
||||||
|
turbo = "never";
|
||||||
|
scaling_max_freq = 1000000;
|
||||||
|
};
|
||||||
|
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
services.thermald.enable = true;
|
||||||
|
|
||||||
|
services.openssh = {
|
||||||
|
enable = true;
|
||||||
|
settings = {
|
||||||
|
# Require public key authentication
|
||||||
|
PasswordAuthentication = false;
|
||||||
|
KbdInteractiveAuthentication = false;
|
||||||
|
AllowUsers = null;
|
||||||
|
PermitRootLogin = "no";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
# Minimal TUI displaymanager for loggin in and launching hyprland
|
||||||
|
services.greetd = {
|
||||||
|
enable = true;
|
||||||
|
settings = {
|
||||||
|
default_session = {
|
||||||
|
command = "${pkgs.greetd.tuigreet}/bin/tuigreet --time --cmd Hyprland";
|
||||||
|
user = "snorre";
|
||||||
|
};
|
||||||
|
|
||||||
|
# First session auto starts hyprland
|
||||||
|
initial_session = {
|
||||||
|
command = "${pkgs.hyprland}/bin/Hyprland";
|
||||||
|
user = "snorre";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
# hardware.opengl.driSupport = true; # This is already enabled by default
|
||||||
|
# hardware.opengl.driSupport32Bit = true; # For 32 bit applications
|
||||||
|
|
||||||
|
|
||||||
|
# This option defines the first version of NixOS you have installed on this particular machine,
|
||||||
|
# and is used to maintain compatibility with application data (e.g. databases) created on older NixOS versions.
|
||||||
|
#
|
||||||
|
# Most users should NEVER change this value after the initial install, for any reason,
|
||||||
|
# even if you've upgraded your system to a new NixOS release.
|
||||||
|
#
|
||||||
|
# This value does NOT affect the Nixpkgs version your packages and OS are pulled from,
|
||||||
|
# so changing it will NOT upgrade your system.
|
||||||
|
#
|
||||||
|
# This value being lower than the current NixOS release does NOT mean your system is
|
||||||
|
# out of date, out of support, or vulnerable.
|
||||||
|
#
|
||||||
|
# Do NOT change this value unless you have manually inspected all the changes it would make to your configuration,
|
||||||
|
# and migrated your data accordingly.
|
||||||
|
#
|
||||||
|
# For more information, see `man configuration.nix` or https://nixos.org/manual/nixos/stable/options#opt-system.stateVersion .
|
||||||
|
system.stateVersion = "23.11"; # Did you read the comment?
|
||||||
|
|
||||||
|
}
|
||||||
|
|
29
hosts/desktop/disko.nix
Normal file
29
hosts/desktop/disko.nix
Normal file
|
@ -0,0 +1,29 @@
|
||||||
|
{ device ? throw "Set this to your disk device, e.g. /dev/sda"
|
||||||
|
, swap-size ? "0"
|
||||||
|
, encrypted ? false
|
||||||
|
, lib
|
||||||
|
, ...
|
||||||
|
}:
|
||||||
|
let
|
||||||
|
disko-luks = import ../modules/disko/disko-luks.nix;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
disko.devices.disk = lib.mergeAttrsList [
|
||||||
|
{ main = disko-luks.devices.disk.main; }
|
||||||
|
{
|
||||||
|
hdd = {
|
||||||
|
device = "/dev/sda";
|
||||||
|
type = "disk";
|
||||||
|
content = {
|
||||||
|
type = "gpt";
|
||||||
|
partitions = {
|
||||||
|
main = {
|
||||||
|
size = "100%";
|
||||||
|
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
|
];
|
||||||
|
}
|
26
hosts/desktop/hardware-configuration.nix
Normal file
26
hosts/desktop/hardware-configuration.nix
Normal file
|
@ -0,0 +1,26 @@
|
||||||
|
# Do not modify this file! It was generated by ‘nixos-generate-config’
|
||||||
|
# and may be overwritten by future invocations. Please make changes
|
||||||
|
# to /etc/nixos/configuration.nix instead.
|
||||||
|
{ config, lib, pkgs, modulesPath, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
imports =
|
||||||
|
[ (modulesPath + "/installer/scan/not-detected.nix")
|
||||||
|
];
|
||||||
|
|
||||||
|
boot.initrd.availableKernelModules = [ "xhci_pci" "ahci" "nvme" "usb_storage" "usbhid" "sd_mod" ];
|
||||||
|
boot.initrd.kernelModules = [ ];
|
||||||
|
boot.kernelModules = [ "kvm-amd" ];
|
||||||
|
boot.extraModulePackages = [ ];
|
||||||
|
|
||||||
|
# Enables DHCP on each ethernet and wireless interface. In case of scripted networking
|
||||||
|
# (the default) this is the recommended approach. When using systemd-networkd it's
|
||||||
|
# still possible to use this option, but it's recommended to use it in conjunction
|
||||||
|
# with explicit per-interface declarations with `networking.interfaces.<interface>.useDHCP`.
|
||||||
|
networking.useDHCP = lib.mkDefault true;
|
||||||
|
# networking.interfaces.enp8s0.useDHCP = lib.mkDefault true;
|
||||||
|
# networking.interfaces.wlp7s0.useDHCP = lib.mkDefault true;
|
||||||
|
|
||||||
|
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
|
||||||
|
hardware.cpu.amd.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
|
||||||
|
}
|
151
hosts/desktop/home.nix
Executable file
151
hosts/desktop/home.nix
Executable file
|
@ -0,0 +1,151 @@
|
||||||
|
{ pkgs, inputs, lib, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
imports = [
|
||||||
|
# inputs.impermanence.nixosModules.home-manager.impermanence
|
||||||
|
|
||||||
|
../../modules/stylix/home
|
||||||
|
../../modules/editors/nixvim
|
||||||
|
../../modules/shells/zsh.nix
|
||||||
|
|
||||||
|
../../modules/programs/dunst.nix
|
||||||
|
../../modules/programs/waybar
|
||||||
|
../../modules/programs/hyprpaper.nix
|
||||||
|
../../modules/programs/tofi.nix
|
||||||
|
../../modules/programs/alacritty.nix
|
||||||
|
../../modules/programs/firefox.nix
|
||||||
|
../../modules/programs/tmux.nix
|
||||||
|
../../modules/programs/mangohud.nix
|
||||||
|
|
||||||
|
(import ../../modules/window-managers/hyprland {
|
||||||
|
monitors = [
|
||||||
|
"DP-2, 1920x1080@240, 1080x300, 1"
|
||||||
|
"HDMI-A-1, 1920x1080@144, 0x0, 1, transform, 1"
|
||||||
|
];
|
||||||
|
|
||||||
|
border-radius = 4;
|
||||||
|
})
|
||||||
|
|
||||||
|
../../modules/window-managers/hyprland/hyprlock.nix
|
||||||
|
../../modules/window-managers/hyprland/hypridle.nix
|
||||||
|
|
||||||
|
# (import ../../modules/disko/impermanence-home.nix {
|
||||||
|
# extraDirectories = [
|
||||||
|
# ".jump"
|
||||||
|
#
|
||||||
|
# ".mozilla"
|
||||||
|
# ".zen"
|
||||||
|
#
|
||||||
|
# ".config/vesktop"
|
||||||
|
# ".config/zsh"
|
||||||
|
#
|
||||||
|
# ".cache/mozilla"
|
||||||
|
# ".cache/zen"
|
||||||
|
# ".cache/nvidia"
|
||||||
|
# ".cache/nix"
|
||||||
|
# ".cache/obexd"
|
||||||
|
# ".factorio"
|
||||||
|
# ".local/share/Steam"
|
||||||
|
# ];
|
||||||
|
# extraFiles = [ ];
|
||||||
|
#
|
||||||
|
# username = "snorre";
|
||||||
|
# nixIndexEnabled = true;
|
||||||
|
# })
|
||||||
|
];
|
||||||
|
|
||||||
|
home.username = "snorre";
|
||||||
|
home.homeDirectory = "/home/snorre";
|
||||||
|
|
||||||
|
stylix.base16Scheme = "${pkgs.base16-schemes}/share/themes/gruvbox-material-dark-soft.yaml";
|
||||||
|
stylix.polarity = "dark";
|
||||||
|
stylix.image = ./nixos-wallpaper.png;
|
||||||
|
stylix.autoEnable = true;
|
||||||
|
stylix.targets.alacritty.enable = true;
|
||||||
|
# hyprpaper.wallpaper = ./nixos-wallpaper.png;
|
||||||
|
|
||||||
|
nixpkgs.config.allowUnfree = true;
|
||||||
|
|
||||||
|
home.packages =
|
||||||
|
let
|
||||||
|
tex = (pkgs.texlive.combine {
|
||||||
|
inherit (pkgs.texlive) scheme-medium
|
||||||
|
titling
|
||||||
|
biblatex hyperref amsmath tcolorbox environ
|
||||||
|
;
|
||||||
|
});
|
||||||
|
in
|
||||||
|
(with pkgs; [
|
||||||
|
file
|
||||||
|
nixpkgs-fmt
|
||||||
|
ripgrep
|
||||||
|
jump
|
||||||
|
wl-clipboard
|
||||||
|
hyprpaper
|
||||||
|
hyprpicker
|
||||||
|
grimblast
|
||||||
|
tofi
|
||||||
|
brightnessctl
|
||||||
|
# Required for waybar to work
|
||||||
|
playerctl
|
||||||
|
wl-clipboard
|
||||||
|
|
||||||
|
localsend
|
||||||
|
|
||||||
|
ipe
|
||||||
|
texlivePackages.latex
|
||||||
|
texlivePackages.luatex
|
||||||
|
zathura
|
||||||
|
tex
|
||||||
|
biber
|
||||||
|
|
||||||
|
prismlauncher
|
||||||
|
|
||||||
|
spotify
|
||||||
|
vesktop
|
||||||
|
sublime-merge
|
||||||
|
|
||||||
|
obs-studio
|
||||||
|
|
||||||
|
vial
|
||||||
|
]);
|
||||||
|
|
||||||
|
# Mount 2tb harddisk
|
||||||
|
systemd.user.mounts."home-snorre-2tb" = {
|
||||||
|
Unit = {
|
||||||
|
Description = "Mount 2tb hdd to home folder";
|
||||||
|
};
|
||||||
|
|
||||||
|
Mount = {
|
||||||
|
What = "/dev/sda1";
|
||||||
|
Where = "/home/snorre/2tb";
|
||||||
|
Type = "ext4";
|
||||||
|
Options = "defaults";
|
||||||
|
TimeoutSec = 30;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
programs.btop.enable = true;
|
||||||
|
|
||||||
|
# programs.nix-index = {
|
||||||
|
# enable = true;
|
||||||
|
# enableZshIntegration = true;
|
||||||
|
# };
|
||||||
|
|
||||||
|
zsh.jump.enable = true;
|
||||||
|
zsh.jump.show-destination = true;
|
||||||
|
# Since zsh is the login shell it overrides $HOME/.zsh_history before impermanence can restore the old version.
|
||||||
|
# Therefore we simply store the history directly in /persist
|
||||||
|
zsh.histFile = "/persist/system/home/snorre/.zsh_history";
|
||||||
|
|
||||||
|
# Let home-manager manage itself
|
||||||
|
programs.home-manager.enable = true;
|
||||||
|
|
||||||
|
home.sessionVariables = {
|
||||||
|
EDITOR = "nvim";
|
||||||
|
# NIX_AUTO_RUN = "1"; # Automatically run non-installed commands if possible
|
||||||
|
# NIX_BUILD_SHELL = "zsh";
|
||||||
|
};
|
||||||
|
|
||||||
|
home.stateVersion = "23.11";
|
||||||
|
}
|
BIN
hosts/desktop/nixos-wallpaper.png
Executable file
BIN
hosts/desktop/nixos-wallpaper.png
Executable file
Binary file not shown.
After Width: | Height: | Size: 124 KiB |
32
hosts/desktop/persist.nix
Normal file
32
hosts/desktop/persist.nix
Normal file
|
@ -0,0 +1,32 @@
|
||||||
|
{
|
||||||
|
directories = [
|
||||||
|
### DEFAULT BEGIN ###
|
||||||
|
"Documents"
|
||||||
|
"Music"
|
||||||
|
"Pictures"
|
||||||
|
"Videos"
|
||||||
|
".gnupg"
|
||||||
|
".ssh"
|
||||||
|
".local"
|
||||||
|
".cache/mesa_shader_cache"
|
||||||
|
".cache/mesa_shader_cache_db"
|
||||||
|
#### DEFAULT END ####
|
||||||
|
|
||||||
|
".jump"
|
||||||
|
|
||||||
|
".mozilla"
|
||||||
|
|
||||||
|
".config/vesktop"
|
||||||
|
".config/zsh"
|
||||||
|
|
||||||
|
".cache/mozilla"
|
||||||
|
".cache/nix"
|
||||||
|
".cache/obexd"
|
||||||
|
".factorio"
|
||||||
|
".local/share/Steam"
|
||||||
|
];
|
||||||
|
files = [
|
||||||
|
".zsh_history"
|
||||||
|
".gitconfig"
|
||||||
|
];
|
||||||
|
}
|
433
hosts/laptop/configuration.nix
Executable file
433
hosts/laptop/configuration.nix
Executable file
|
@ -0,0 +1,433 @@
|
||||||
|
# Edit this configuration file to define what should be installed on
|
||||||
|
# your system. Help is available in the configuration.nix(5) man page, on
|
||||||
|
# https://search.nixos.org/options and in the NixOS manual (`nixos-help`).
|
||||||
|
|
||||||
|
{ config, lib, pkgs, inputs, ... }:
|
||||||
|
let
|
||||||
|
persistence = {
|
||||||
|
"snorre" = import ./persist.nix;
|
||||||
|
"work" = import ./persist-work.nix;
|
||||||
|
};
|
||||||
|
in
|
||||||
|
{
|
||||||
|
imports =
|
||||||
|
[
|
||||||
|
# Include the results of the hardware scan.
|
||||||
|
./hardware-configuration.nix
|
||||||
|
../../modules/drivers/nvidia.nix
|
||||||
|
../../modules/plymouth/blahaj.nix
|
||||||
|
|
||||||
|
(import ../../modules/disko/delete-on-boot.nix {
|
||||||
|
inherit lib;
|
||||||
|
persistExtraDirectories = [ ];
|
||||||
|
persistExtraFiles = [ ];
|
||||||
|
users = persistence;
|
||||||
|
})
|
||||||
|
# ../../modules/plymouth
|
||||||
|
#../../modules/users/main-user.nix
|
||||||
|
];
|
||||||
|
|
||||||
|
# Use the systemd-boot EFI boot loader.
|
||||||
|
boot.loader.systemd-boot.enable = true;
|
||||||
|
boot.loader.efi.canTouchEfiVariables = true;
|
||||||
|
boot.loader.timeout = 0;
|
||||||
|
|
||||||
|
boot.kernelPackages = pkgs.linuxPackages_zen;
|
||||||
|
|
||||||
|
# boot.plymouth.enable = true;
|
||||||
|
# boot.plymouth.theme = "nixos-bgrt";
|
||||||
|
# boot.plymouth.themePackages = [
|
||||||
|
# pkgs.nixos-bgrt-plymouth
|
||||||
|
# ];
|
||||||
|
|
||||||
|
programs.nix-ld.enable = true;
|
||||||
|
# programs.nix-ld.libraries = with pkgs; [
|
||||||
|
# # Add any missing dynamic libraries for unpackaged programs
|
||||||
|
# # here, NOT in environment.systemPackages
|
||||||
|
# ];
|
||||||
|
|
||||||
|
boot.consoleLogLevel = 0;
|
||||||
|
boot.initrd.verbose = false;
|
||||||
|
boot.kernelParams = [
|
||||||
|
"i915.fastboot=1"
|
||||||
|
"preempt=full"
|
||||||
|
"quiet"
|
||||||
|
"splash"
|
||||||
|
# "boot.shell_on_fail"
|
||||||
|
"loglevel=3"
|
||||||
|
# "rd.systemd.show_status=false"
|
||||||
|
# "rd.udev.log_level=3"
|
||||||
|
|
||||||
|
# "udev.log_priority=3"
|
||||||
|
];
|
||||||
|
|
||||||
|
nix.settings.experimental-features = [ "nix-command" "flakes" ];
|
||||||
|
|
||||||
|
home-manager = {
|
||||||
|
extraSpecialArgs = { inherit inputs; };
|
||||||
|
users = {
|
||||||
|
"snorre" = import ./home.nix;
|
||||||
|
"work" = import ./work-home.nix;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
# fonts.packages = with pkgs; [
|
||||||
|
# (nerdfonts.override {
|
||||||
|
# fonts = [
|
||||||
|
# "Devicons"config
|
||||||
|
# ];
|
||||||
|
# })
|
||||||
|
# ];
|
||||||
|
|
||||||
|
programs.localsend.openFirewall = true;
|
||||||
|
|
||||||
|
virtualisation.libvirtd.enable = true;
|
||||||
|
programs.virt-manager.enable = true;
|
||||||
|
|
||||||
|
programs.steam = {
|
||||||
|
enable = true;
|
||||||
|
gamescopeSession.enable = false;
|
||||||
|
};
|
||||||
|
|
||||||
|
security.chromiumSuidSandbox.enable = true; # unity3d.enable was only to allow chrome root sandboxxing
|
||||||
|
programs.adb.enable = true;
|
||||||
|
|
||||||
|
# nixos loves its files. So much that it opens more than 8000 of them at times. Lets increase the limit
|
||||||
|
# security.pam.loginLimits = [{
|
||||||
|
# domain = "*";
|
||||||
|
# type = "soft";
|
||||||
|
# item = "nofile";
|
||||||
|
# value = "65536";
|
||||||
|
# }];
|
||||||
|
|
||||||
|
users.users."snorre" = {
|
||||||
|
isNormalUser = true;
|
||||||
|
hashedPassword = "$6$xHtgaWKUglOBLft2$ZUN2p1GgzMJuXMs31SKxBta.8T1V0nXKMyFrq061pBA53dpG7zkWrMweSdC7eEg/fsloH5TO2Ats7MISF5nWL/";
|
||||||
|
extraGroups = [
|
||||||
|
"networkmanager"
|
||||||
|
"audio"
|
||||||
|
"wheel"
|
||||||
|
"adbusers"
|
||||||
|
"libvirtd"
|
||||||
|
];
|
||||||
|
|
||||||
|
openssh.authorizedKeys.keyFiles = [
|
||||||
|
./ssh/authorized_keys_snorre
|
||||||
|
];
|
||||||
|
|
||||||
|
shell = pkgs.zsh;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
users.users."work" = {
|
||||||
|
isNormalUser = true;
|
||||||
|
hashedPassword = "$6$LcwJW76Ow8rki4NT$sFEMJOp/L452dPjjQR8TOzEOHDb7yfaMwexYw2COCGTJYeb2.ZDrbVTfmabqpEl4EzCds9BEAP.L536yb8Lik0";
|
||||||
|
extraGroups = [
|
||||||
|
"networkmanager"
|
||||||
|
"audio"
|
||||||
|
"wheel"
|
||||||
|
"adbusers"
|
||||||
|
"libvirtd"
|
||||||
|
"docker"
|
||||||
|
];
|
||||||
|
|
||||||
|
shell = pkgs.zsh;
|
||||||
|
};
|
||||||
|
|
||||||
|
# Programs to enable
|
||||||
|
# programs.zsh.enable = true; # Better shell than bash
|
||||||
|
programs.zsh = {
|
||||||
|
enable = true;
|
||||||
|
# This prevents cache invalidation when also managing zsh from home-manager,
|
||||||
|
# leading to faster startup times
|
||||||
|
enableGlobalCompInit = false;
|
||||||
|
};
|
||||||
|
programs.hyprland = {
|
||||||
|
# Hyprland desktop environment
|
||||||
|
enable = true;
|
||||||
|
portalPackage = pkgs.xdg-desktop-portal-hyprland;
|
||||||
|
};
|
||||||
|
|
||||||
|
programs.ssh.startAgent = true; # ssh-agent for interacting with github
|
||||||
|
# security.chromiumSuidSandbox.enable = true; # unity3d.enable was only to allow chrome root sandboxxing
|
||||||
|
# programs.noisetorch.enable = true; # Noisetorch because discord krisp doesnt work
|
||||||
|
|
||||||
|
# Fuck nano, all my homies hate nano
|
||||||
|
programs.nano.enable = false;
|
||||||
|
|
||||||
|
# I want my steams and other non-libre software
|
||||||
|
nixpkgs.config.allowUnfree = true;
|
||||||
|
|
||||||
|
# List packages installed in system profile. To search, run:
|
||||||
|
# $ nix search wget
|
||||||
|
environment.systemPackages = with pkgs; [
|
||||||
|
wget
|
||||||
|
curl
|
||||||
|
git
|
||||||
|
# ranger
|
||||||
|
|
||||||
|
# libsecret manager
|
||||||
|
# pass-secret-service
|
||||||
|
keepassxc
|
||||||
|
libsecret
|
||||||
|
|
||||||
|
# ((drv: pkgs.symlinkJoin {
|
||||||
|
# name = drv.name;
|
||||||
|
# paths = [ drv ];
|
||||||
|
# postBuild = "rm -rf $out/share/applications";
|
||||||
|
# }) pkgs.neovim)
|
||||||
|
|
||||||
|
neovim
|
||||||
|
|
||||||
|
# graphics
|
||||||
|
mesa
|
||||||
|
|
||||||
|
# Notifications
|
||||||
|
libnotify
|
||||||
|
|
||||||
|
# For enabling and styling QT
|
||||||
|
libsForQt5.qtstyleplugin-kvantum
|
||||||
|
libsForQt5.qt5ct
|
||||||
|
catppuccin-kvantum
|
||||||
|
|
||||||
|
# Gnome keyring makes it so we dont have to keep logging into programs
|
||||||
|
gnome-keyring
|
||||||
|
# Ui for when programs want sudo
|
||||||
|
polkit-kde-agent
|
||||||
|
];
|
||||||
|
|
||||||
|
programs.gamemode = {
|
||||||
|
enable = true;
|
||||||
|
enableRenice = true;
|
||||||
|
|
||||||
|
settings = {
|
||||||
|
general = {
|
||||||
|
renice = 3;
|
||||||
|
};
|
||||||
|
|
||||||
|
custom = {
|
||||||
|
# start = "${pkgs.libnotify}/bin/notify-send 'GameMode started'";
|
||||||
|
# end = "${pkgs.libnotify}/bin/notify-send 'GameMode ended'";
|
||||||
|
|
||||||
|
start =
|
||||||
|
let
|
||||||
|
script = pkgs.writeScriptBin "gamemode_start.sh" ''
|
||||||
|
${pkgs.libnotify}/bin/notify-send "GameMode started"
|
||||||
|
${pkgs.libnotify}/bin/notify-send "user is: $USER"
|
||||||
|
/home/$USER/.nix-profile/bin/hyprctl keyword input:touchpad:disable_while_typing false
|
||||||
|
'';
|
||||||
|
in
|
||||||
|
"${script}/bin/gamemode_start.sh";
|
||||||
|
|
||||||
|
end =
|
||||||
|
let
|
||||||
|
script = pkgs.writeScriptBin "gamemode_end.sh" ''
|
||||||
|
${pkgs.libnotify}/bin/notify-send "GameMode end"
|
||||||
|
/home/$USER/.nix-profile/bin/hyprctl keyword input:touchpad:disable_while_typing true
|
||||||
|
'';
|
||||||
|
in
|
||||||
|
"${script}/bin/gamemode_end.sh";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
# Session variables for qt and hyprland
|
||||||
|
environment.sessionVariables = {
|
||||||
|
XDG_CURRENT_DESKTOP = "Hyprland";
|
||||||
|
XDG_SESSION_DESKTOP = "Hyprland";
|
||||||
|
XDG_SESSION_TYPE = "wayland";
|
||||||
|
GDK_BACKEND = "wayland";
|
||||||
|
GTK_USE_PORTAL = "1";
|
||||||
|
QT_QPA_PLATFORMTHEME = "qt5ct";
|
||||||
|
QT_QPA_PLATFORM = "wayland";
|
||||||
|
QT_WAYLAND_DISABLE_WINDOWDECORATION = "1";
|
||||||
|
QT_AUTO_SCREEN_SCALE_FACTOR = "0";
|
||||||
|
MOZ_ENABLE_WAYLAND = "1";
|
||||||
|
# SSH_AUTH_SOCK = "$XDG_RUNTIME_DIR/ssh-agent";
|
||||||
|
};
|
||||||
|
|
||||||
|
xdg.portal = {
|
||||||
|
enable = true;
|
||||||
|
wlr.enable = true;
|
||||||
|
extraPortals = [
|
||||||
|
pkgs.xdg-desktop-portal-gtk
|
||||||
|
(pkgs.callPackage ../../modules/portals/xdg-desktop-portal-termfilechooser.nix { })
|
||||||
|
];
|
||||||
|
# xdgOpenUsePortal = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
qt = {
|
||||||
|
enable = true;
|
||||||
|
platformTheme = "qt5ct";
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
# Delete old entries to
|
||||||
|
nix = {
|
||||||
|
gc = {
|
||||||
|
automatic = true;
|
||||||
|
options = "--delete-older-than 30d";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
stylix.base16Scheme = "${pkgs.base16-schemes}/share/themes/gruvbox-material-dark-soft.yaml";
|
||||||
|
stylix.autoEnable = true;
|
||||||
|
stylix.polarity = "dark";
|
||||||
|
|
||||||
|
# stylix.cursor.package = ( pkgs.callPackage ../../modules/stylix/cursors/posy-improved {} );
|
||||||
|
# stylix.cursor.name = "Posy_Cursor";
|
||||||
|
|
||||||
|
stylix.cursor.package = pkgs.bibata-cursors;
|
||||||
|
stylix.cursor.name = "Bibata-Modern-Ice";
|
||||||
|
stylix.cursor.size = 24;
|
||||||
|
|
||||||
|
stylix.image = ./nixos-wallpaper.png;
|
||||||
|
|
||||||
|
networking.hostName = "laptop"; # Define your hostname.
|
||||||
|
networking.networkmanager.enable = true; # Easiest to use and most distros use this by default.
|
||||||
|
networking.networkmanager.wifi.powersave = true;
|
||||||
|
networking.firewall = {
|
||||||
|
enable = true;
|
||||||
|
allowedTCPPorts = [ 8000 ];
|
||||||
|
allowedUDPPortRanges = [
|
||||||
|
{ from = 8000; to = 8010; }
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
# Fuck off, i wanna boot
|
||||||
|
systemd.services."NetworkManager-wait-online".enable = false;
|
||||||
|
|
||||||
|
# Set your time zone.
|
||||||
|
time.timeZone = "Europe/Copenhagen";
|
||||||
|
|
||||||
|
# Select internationalisation properties.
|
||||||
|
i18n.defaultLocale = "en_US.UTF-8";
|
||||||
|
console = {
|
||||||
|
keyMap = "dk";
|
||||||
|
};
|
||||||
|
|
||||||
|
# Remove message when running commands as sudo
|
||||||
|
security.sudo = {
|
||||||
|
enable = true;
|
||||||
|
extraConfig = ''
|
||||||
|
Defaults lecture = never
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
services.blueman = {
|
||||||
|
enable = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
virtualisation.docker = {
|
||||||
|
enable = true;
|
||||||
|
storageDriver = "btrfs";
|
||||||
|
};
|
||||||
|
|
||||||
|
hardware.bluetooth.enable = true;
|
||||||
|
hardware.bluetooth.powerOnBoot = false;
|
||||||
|
hardware.bluetooth.settings = {
|
||||||
|
General = {
|
||||||
|
Experimental = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
hardware.graphics = {
|
||||||
|
enable = true;
|
||||||
|
extraPackages = with pkgs; [
|
||||||
|
intel-media-driver # LIBVA_DRIVER_NAME=iHD
|
||||||
|
intel-vaapi-driver # LIBVA_DRIVER_NAME=i965 (older but works better for Firefox/Chromium)
|
||||||
|
libvdpau-va-gl
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
services.pipewire = {
|
||||||
|
enable = true;
|
||||||
|
audio.enable = true;
|
||||||
|
alsa.enable = true;
|
||||||
|
pulse.enable = true;
|
||||||
|
wireplumber.enable = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
# Some programs need SUID wrappers, can be configured further or are
|
||||||
|
# started in user sessions.
|
||||||
|
programs.mtr.enable = true;
|
||||||
|
programs.gnupg.agent = {
|
||||||
|
enable = true;
|
||||||
|
# enableSSHSupport = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
# services.power-profiles-daemon = {
|
||||||
|
# enable = true;
|
||||||
|
# };
|
||||||
|
services.auto-cpufreq = {
|
||||||
|
enable = true;
|
||||||
|
settings = {
|
||||||
|
charger = {
|
||||||
|
governor = "performance";
|
||||||
|
turbo = "auto";
|
||||||
|
};
|
||||||
|
|
||||||
|
battery = {
|
||||||
|
governor = "powersave";
|
||||||
|
energy_performance_preference = "power";
|
||||||
|
turbo = "never";
|
||||||
|
scaling_max_freq = 1000000;
|
||||||
|
};
|
||||||
|
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
services.thermald.enable = true;
|
||||||
|
|
||||||
|
services.openssh = {
|
||||||
|
enable = true;
|
||||||
|
settings = {
|
||||||
|
# Require public key authentication
|
||||||
|
PasswordAuthentication = false;
|
||||||
|
KbdInteractiveAuthentication = false;
|
||||||
|
AllowUsers = null;
|
||||||
|
PermitRootLogin = "no";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
# Minimal TUI displaymanager for loggin in and launching hyprland
|
||||||
|
services.greetd = {
|
||||||
|
enable = true;
|
||||||
|
settings = {
|
||||||
|
default_session = {
|
||||||
|
command = "${pkgs.greetd.tuigreet}/bin/tuigreet --time --cmd Hyprland";
|
||||||
|
user = "snorre";
|
||||||
|
};
|
||||||
|
|
||||||
|
# First session auto starts hyprland
|
||||||
|
initial_session = {
|
||||||
|
command = "${pkgs.hyprland}/bin/Hyprland";
|
||||||
|
user = "snorre";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
# hardware.opengl.driSupport = true; # This is already enabled by default
|
||||||
|
# hardware.opengl.driSupport32Bit = true; # For 32 bit applications
|
||||||
|
|
||||||
|
|
||||||
|
# This option defines the first version of NixOS you have installed on this particular machine,
|
||||||
|
# and is used to maintain compatibility with application data (e.g. databases) created on older NixOS versions.
|
||||||
|
#
|
||||||
|
# Most users should NEVER change this value after the initial install, for any reason,
|
||||||
|
# even if you've upgraded your system to a new NixOS release.
|
||||||
|
#
|
||||||
|
# This value does NOT affect the Nixpkgs version your packages and OS are pulled from,
|
||||||
|
# so changing it will NOT upgrade your system.
|
||||||
|
#
|
||||||
|
# This value being lower than the current NixOS release does NOT mean your system is
|
||||||
|
# out of date, out of support, or vulnerable.
|
||||||
|
#
|
||||||
|
# Do NOT change this value unless you have manually inspected all the changes it would make to your configuration,
|
||||||
|
# and migrated your data accordingly.
|
||||||
|
#
|
||||||
|
# For more information, see `man configuration.nix` or https://nixos.org/manual/nixos/stable/options#opt-system.stateVersion .
|
||||||
|
system.stateVersion = "23.11"; # Did you read the comment?
|
||||||
|
|
||||||
|
}
|
||||||
|
|
26
hosts/laptop/hardware-configuration.nix
Executable file
26
hosts/laptop/hardware-configuration.nix
Executable file
|
@ -0,0 +1,26 @@
|
||||||
|
# Do not modify this file! It was generated by ‘nixos-generate-config’
|
||||||
|
# and may be overwritten by future invocations. Please make changes
|
||||||
|
# to /etc/nixos/configuration.nix instead.
|
||||||
|
{ config, lib, pkgs, modulesPath, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
imports =
|
||||||
|
[ (modulesPath + "/installer/scan/not-detected.nix")
|
||||||
|
];
|
||||||
|
|
||||||
|
boot.initrd.availableKernelModules = [ "xhci_pci" "ahci" "nvme" "usb_storage" "usbhid" "sd_mod" ];
|
||||||
|
boot.initrd.kernelModules = [ ];
|
||||||
|
boot.kernelModules = [ "kvm-intel" ];
|
||||||
|
boot.extraModulePackages = [ ];
|
||||||
|
|
||||||
|
# Enables DHCP on each ethernet and wireless interface. In case of scripted networking
|
||||||
|
# (the default) this is the recommended approach. When using systemd-networkd it's
|
||||||
|
# still possible to use this option, but it's recommended to use it in conjunction
|
||||||
|
# with explicit per-interface declarations with `networking.interfaces.<interface>.useDHCP`.
|
||||||
|
networking.useDHCP = lib.mkDefault true;
|
||||||
|
# networking.interfaces.enp2s0.useDHCP = lib.mkDefault true;
|
||||||
|
# networking.interfaces.wlo1.useDHCP = lib.mkDefault true;
|
||||||
|
|
||||||
|
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
|
||||||
|
hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
|
||||||
|
}
|
124
hosts/laptop/home.nix
Executable file
124
hosts/laptop/home.nix
Executable file
|
@ -0,0 +1,124 @@
|
||||||
|
{ pkgs, inputs, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
imports = [
|
||||||
|
# inputs.impermanence.nixosModules.home-manager.impermanence
|
||||||
|
|
||||||
|
../../modules/stylix/home
|
||||||
|
../../modules/editors/nixvim
|
||||||
|
../../modules/shells/zsh.nix
|
||||||
|
|
||||||
|
../../modules/programs/dunst.nix
|
||||||
|
../../modules/programs/waybar
|
||||||
|
../../modules/programs/hyprpaper.nix
|
||||||
|
../../modules/programs/tofi.nix
|
||||||
|
../../modules/programs/alacritty.nix
|
||||||
|
# ../../modules/programs/firefox.nix
|
||||||
|
../../modules/programs/tmux.nix
|
||||||
|
|
||||||
|
(import ../../modules/window-managers/hyprland { monitors = ["eDP-1, 1920x1080@60, auto, 1"]; })
|
||||||
|
../../modules/window-managers/hyprland/hyprlock.nix
|
||||||
|
../../modules/window-managers/hyprland/hypridle.nix
|
||||||
|
|
||||||
|
# (import ../../modules/disko/impermanence-home.nix {
|
||||||
|
# extraDirectories = [
|
||||||
|
# ".jump"
|
||||||
|
#
|
||||||
|
# ".mozilla"
|
||||||
|
# ".zen"
|
||||||
|
#
|
||||||
|
# ".config/vesktop"
|
||||||
|
# ".config/zsh"
|
||||||
|
#
|
||||||
|
# ".cache/mozilla"
|
||||||
|
# ".cache/zen"
|
||||||
|
# ".cache/nvidia"
|
||||||
|
# ".cache/nix"
|
||||||
|
# ".cache/obexd"
|
||||||
|
# ".factorio"
|
||||||
|
# ".local/share/Steam"
|
||||||
|
# ];
|
||||||
|
# extraFiles = [ ];
|
||||||
|
#
|
||||||
|
# username = "snorre";
|
||||||
|
# nixIndexEnabled = true;
|
||||||
|
# })
|
||||||
|
];
|
||||||
|
|
||||||
|
home.username = "snorre";
|
||||||
|
home.homeDirectory = "/home/snorre";
|
||||||
|
|
||||||
|
stylix.base16Scheme = "${pkgs.base16-schemes}/share/themes/gruvbox-material-dark-soft.yaml";
|
||||||
|
stylix.polarity = "dark";
|
||||||
|
stylix.image = ./nixos-wallpaper.png;
|
||||||
|
stylix.autoEnable = true;
|
||||||
|
stylix.targets.alacritty.enable = true;
|
||||||
|
# hyprpaper.wallpaper = ./nixos-wallpaper.png;
|
||||||
|
|
||||||
|
nixpkgs.config.allowUnfree = true;
|
||||||
|
|
||||||
|
home.packages =
|
||||||
|
let
|
||||||
|
tex = (pkgs.texlive.combine {
|
||||||
|
inherit (pkgs.texlive) scheme-medium
|
||||||
|
titling
|
||||||
|
biblatex hyperref amsmath tcolorbox environ
|
||||||
|
;
|
||||||
|
});
|
||||||
|
in
|
||||||
|
(with pkgs; [
|
||||||
|
file
|
||||||
|
nixpkgs-fmt
|
||||||
|
ripgrep
|
||||||
|
jump
|
||||||
|
wl-clipboard
|
||||||
|
hyprpaper
|
||||||
|
hyprpicker
|
||||||
|
grimblast
|
||||||
|
tofi
|
||||||
|
brightnessctl
|
||||||
|
# Required for waybar to work
|
||||||
|
playerctl
|
||||||
|
wl-clipboard
|
||||||
|
|
||||||
|
localsend
|
||||||
|
|
||||||
|
ipe
|
||||||
|
texlivePackages.latex
|
||||||
|
texlivePackages.luatex
|
||||||
|
zathura
|
||||||
|
tex
|
||||||
|
biber
|
||||||
|
|
||||||
|
inputs.zen-browser.packages."${system}".default
|
||||||
|
|
||||||
|
spotify
|
||||||
|
vesktop
|
||||||
|
sublime-merge
|
||||||
|
]);
|
||||||
|
|
||||||
|
programs.btop.enable = true;
|
||||||
|
programs.mangohud.enable = true;
|
||||||
|
|
||||||
|
# programs.nix-index = {
|
||||||
|
# enable = true;
|
||||||
|
# enableZshIntegration = true;
|
||||||
|
# };
|
||||||
|
|
||||||
|
zsh.jump.enable = true;
|
||||||
|
zsh.jump.show-destination = true;
|
||||||
|
# Since zsh is the login shell it overrides $HOME/.zsh_history before impermanence can restore the old version.
|
||||||
|
# Therefore we simply store the history directly in /persist
|
||||||
|
zsh.histFile = "/persist/system/home/snorre/.zsh_history";
|
||||||
|
|
||||||
|
# Let home-manager manage itself
|
||||||
|
programs.home-manager.enable = true;
|
||||||
|
|
||||||
|
home.sessionVariables = {
|
||||||
|
EDITOR = "nvim";
|
||||||
|
# NIX_AUTO_RUN = "1"; # Automatically run non-installed commands if possible
|
||||||
|
# NIX_BUILD_SHELL = "zsh";
|
||||||
|
};
|
||||||
|
|
||||||
|
home.stateVersion = "23.11";
|
||||||
|
}
|
BIN
hosts/laptop/nixos-wallpaper.png
Executable file
BIN
hosts/laptop/nixos-wallpaper.png
Executable file
Binary file not shown.
After Width: | Height: | Size: 124 KiB |
33
hosts/laptop/persist-work.nix
Normal file
33
hosts/laptop/persist-work.nix
Normal file
|
@ -0,0 +1,33 @@
|
||||||
|
{
|
||||||
|
directories = [
|
||||||
|
### DEFAULT BEGIN ###
|
||||||
|
"Documents"
|
||||||
|
"Music"
|
||||||
|
"Pictures"
|
||||||
|
"Videos"
|
||||||
|
".gnupg"
|
||||||
|
".ssh"
|
||||||
|
".local"
|
||||||
|
".cache/mesa_shader_cache"
|
||||||
|
".cache/mesa_shader_cache_db"
|
||||||
|
#### DEFAULT END ####
|
||||||
|
|
||||||
|
".jump"
|
||||||
|
|
||||||
|
".mozilla"
|
||||||
|
".zen"
|
||||||
|
|
||||||
|
".config/vesktop"
|
||||||
|
".config/zsh"
|
||||||
|
|
||||||
|
".cache/mozilla"
|
||||||
|
".cache/zen"
|
||||||
|
".cache/nvidia"
|
||||||
|
".cache/nix"
|
||||||
|
".cache/obexd"
|
||||||
|
];
|
||||||
|
files = [
|
||||||
|
".zsh_history"
|
||||||
|
".gitconfig"
|
||||||
|
];
|
||||||
|
}
|
35
hosts/laptop/persist.nix
Normal file
35
hosts/laptop/persist.nix
Normal file
|
@ -0,0 +1,35 @@
|
||||||
|
{
|
||||||
|
directories = [
|
||||||
|
### DEFAULT BEGIN ###
|
||||||
|
"Documents"
|
||||||
|
"Music"
|
||||||
|
"Pictures"
|
||||||
|
"Videos"
|
||||||
|
".gnupg"
|
||||||
|
".ssh"
|
||||||
|
".local"
|
||||||
|
".cache/mesa_shader_cache"
|
||||||
|
".cache/mesa_shader_cache_db"
|
||||||
|
#### DEFAULT END ####
|
||||||
|
|
||||||
|
".jump"
|
||||||
|
|
||||||
|
".mozilla"
|
||||||
|
".zen"
|
||||||
|
|
||||||
|
".config/vesktop"
|
||||||
|
".config/zsh"
|
||||||
|
|
||||||
|
".cache/mozilla"
|
||||||
|
".cache/zen"
|
||||||
|
".cache/nvidia"
|
||||||
|
".cache/nix"
|
||||||
|
".cache/obexd"
|
||||||
|
".factorio"
|
||||||
|
".local/share/Steam"
|
||||||
|
];
|
||||||
|
files = [
|
||||||
|
".zsh_history"
|
||||||
|
".gitconfig"
|
||||||
|
];
|
||||||
|
}
|
1
hosts/laptop/ssh/authorized_keys_snorre
Executable file
1
hosts/laptop/ssh/authorized_keys_snorre
Executable file
|
@ -0,0 +1 @@
|
||||||
|
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIJjfAFx5C/+96wtYHve/wY9SNCdx0E/pQIgeP9EcJEjx snorre@archlinux
|
141
hosts/laptop/work-home.nix
Executable file
141
hosts/laptop/work-home.nix
Executable file
|
@ -0,0 +1,141 @@
|
||||||
|
{ config, pkgs, inputs, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
imports = [
|
||||||
|
inputs.impermanence.nixosModules.home-manager.impermanence
|
||||||
|
|
||||||
|
../../modules/stylix/home
|
||||||
|
../../modules/editors/nixvim
|
||||||
|
../../modules/shells/zsh.nix
|
||||||
|
|
||||||
|
../../modules/programs/dunst.nix
|
||||||
|
../../modules/programs/waybar
|
||||||
|
../../modules/programs/hyprpaper.nix
|
||||||
|
|
||||||
|
../../modules/programs/tofi.nix
|
||||||
|
../../modules/programs/alacritty.nix
|
||||||
|
../../modules/programs/tmux.nix
|
||||||
|
# ../../modules/programs/firefox.nix
|
||||||
|
|
||||||
|
../../modules/window-managers/hyprland
|
||||||
|
../../modules/window-managers/hyprland/hyprlock.nix
|
||||||
|
../../modules/window-managers/hyprland/hypridle.nix
|
||||||
|
|
||||||
|
# (import ../../modules/disko/impermanence-home.nix {
|
||||||
|
# extraDirectories = [
|
||||||
|
# ".jump"
|
||||||
|
# ".android"
|
||||||
|
# ".mozilla"
|
||||||
|
# ".zen"
|
||||||
|
#
|
||||||
|
# ".config/zsh"
|
||||||
|
# ".config/unity3d"
|
||||||
|
#
|
||||||
|
# # Required for android studio to not reset every time i reboot
|
||||||
|
# ".config/Google"
|
||||||
|
# ".cache/Google"
|
||||||
|
#
|
||||||
|
# ".cache/mozilla"
|
||||||
|
# ".cache/nvidia"
|
||||||
|
# ".cache/nix"
|
||||||
|
# ".cache/zen"
|
||||||
|
# {
|
||||||
|
# directory = ".gradle";
|
||||||
|
# method = "symlink";
|
||||||
|
# }
|
||||||
|
# {
|
||||||
|
# directory = "Android";
|
||||||
|
# method = "symlink";
|
||||||
|
# }
|
||||||
|
# ];
|
||||||
|
# extraFiles = [
|
||||||
|
# ];
|
||||||
|
#
|
||||||
|
# username = "work";
|
||||||
|
# nixIndexEnabled = true;
|
||||||
|
# })
|
||||||
|
];
|
||||||
|
|
||||||
|
home.username = "work";
|
||||||
|
home.homeDirectory = "/home/work";
|
||||||
|
|
||||||
|
stylix.base16Scheme = "${pkgs.base16-schemes}/share/themes/gruvbox-material-dark-soft.yaml";
|
||||||
|
stylix.polarity = "dark";
|
||||||
|
|
||||||
|
stylix.image = ./nixos-wallpaper.png;
|
||||||
|
hyprpaper.wallpaper = ./nixos-wallpaper.png;
|
||||||
|
|
||||||
|
nixpkgs.config.allowUnfree = true;
|
||||||
|
|
||||||
|
# Man, i love unity workarounds in my system config
|
||||||
|
# nixpkgs.config.permittedInsecurePackages = [
|
||||||
|
# "openssl-1.1.1w"
|
||||||
|
# ];
|
||||||
|
|
||||||
|
home.packages = with pkgs; [
|
||||||
|
file
|
||||||
|
nixpkgs-fmt
|
||||||
|
ripgrep
|
||||||
|
jump
|
||||||
|
hyprpaper
|
||||||
|
wl-clipboard
|
||||||
|
grimblast
|
||||||
|
tofi
|
||||||
|
# Required for waybar to work
|
||||||
|
playerctl
|
||||||
|
|
||||||
|
zoom-us
|
||||||
|
|
||||||
|
# (unityhub.override {
|
||||||
|
# extraLibs = pkgs: with pkgs; [
|
||||||
|
# openssl_1_1 # Unity doesnt like secure versions of openssl
|
||||||
|
# ];
|
||||||
|
# })
|
||||||
|
# Vscode is neccesary ~for~ _to make_ unity to generate .csproj files
|
||||||
|
# vscode
|
||||||
|
#
|
||||||
|
inputs.zen-browser.packages."${system}".default
|
||||||
|
|
||||||
|
sublime-merge
|
||||||
|
# android-studio
|
||||||
|
slack
|
||||||
|
spotify
|
||||||
|
];
|
||||||
|
|
||||||
|
stylix.targets.alacritty.enable = true;
|
||||||
|
|
||||||
|
programs.btop.enable = true;
|
||||||
|
programs.mangohud.enable = true;
|
||||||
|
|
||||||
|
zsh.jump.enable = true;
|
||||||
|
zsh.jump.show-destination = true;
|
||||||
|
# zsh.histFile = "/persist/home/work/.zsh_history";
|
||||||
|
|
||||||
|
# xdg.desktopEntries = {
|
||||||
|
# unityhub = {
|
||||||
|
# name = "Unity Hub";
|
||||||
|
# genericName = "Game Engine";
|
||||||
|
# exec = builtins.toString (pkgs.writeShellScript "start_unity_hub.sh" ''
|
||||||
|
# #! /usr/bin/env nix-shell
|
||||||
|
# #! nix-shell -i bash -p vscode
|
||||||
|
# ${pkgs.unityhub}/opt/unityhub/unityhub %U
|
||||||
|
# '');
|
||||||
|
# terminal = false;
|
||||||
|
# type = "Application";
|
||||||
|
# categories = [ "Development" ];
|
||||||
|
# icon = "unityhub";
|
||||||
|
# # tryExec = "unityhub";
|
||||||
|
# mimeType = [ "x-scheme-handler/unityhub" ];
|
||||||
|
# };
|
||||||
|
# };
|
||||||
|
|
||||||
|
# Let home-manager manage itself
|
||||||
|
programs.home-manager.enable = true;
|
||||||
|
|
||||||
|
home.sessionVariables = {
|
||||||
|
EDITOR = "nvim";
|
||||||
|
# NIX_AUTO_RUN = "1"; # Automatically run non-installed commands if possible
|
||||||
|
};
|
||||||
|
|
||||||
|
home.stateVersion = "23.11";
|
||||||
|
}
|
184
hosts/nixos-vm/configuration.nix
Executable file
184
hosts/nixos-vm/configuration.nix
Executable file
|
@ -0,0 +1,184 @@
|
||||||
|
# Edit this configuration file to define what should be installed on
|
||||||
|
# your system. Help is available in the configuration.nix(5) man page, on
|
||||||
|
# https://search.nixos.org/options and in the NixOS manual (`nixos-help`).
|
||||||
|
|
||||||
|
{ config, lib, pkgs, inputs, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
imports =
|
||||||
|
[
|
||||||
|
# Include the results of the hardware scan.
|
||||||
|
./hardware-configuration.nix
|
||||||
|
#../../modules/users/main-user.nix
|
||||||
|
];
|
||||||
|
|
||||||
|
# Use the systemd-boot EFI boot loader.
|
||||||
|
boot.loader.systemd-boot.enable = true;
|
||||||
|
boot.loader.efi.canTouchEfiVariables = true;
|
||||||
|
|
||||||
|
nix.settings.experimental-features = [ "nix-command" "flakes" ];
|
||||||
|
|
||||||
|
boot.initrd.postDeviceCommands = lib.mkAfter ''
|
||||||
|
# Prepare temporary folder
|
||||||
|
mkdir /btrfs_tmp
|
||||||
|
|
||||||
|
# Open encrypted partition
|
||||||
|
cryptsetup luksOpen /dev/vda3 crypted
|
||||||
|
|
||||||
|
# Mount unencrypted partition in temp folder
|
||||||
|
mount /dev/mapper/crypted /btrfs_tmp
|
||||||
|
|
||||||
|
# Check if root subvolume exists in partition
|
||||||
|
if [[ -e /btrfs_tmp/root ]]; then
|
||||||
|
# If a folder for old roots doesnt exist we create one
|
||||||
|
mkdir -p /btrfs_tmp/old_roots
|
||||||
|
# Get timestamp for naming roots
|
||||||
|
timestamp=$(date --date="@$(stat -c %Y /btrfs_tmp/root)" "+%Y-%m-%-d_%H:%M:%S")
|
||||||
|
# Move old root into folder
|
||||||
|
mv /btrfs_tmp/root "/btrfs_tmp/old_roots/$timestamp"
|
||||||
|
fi
|
||||||
|
|
||||||
|
delete_subvolume_recursively() {
|
||||||
|
IFS=$'\n'
|
||||||
|
for i in $(btrfs subvolume list -o "$1" | cut -f 9- -d ' '); do
|
||||||
|
delete_subvolume_recursively "btrfs_tmp/$i"
|
||||||
|
done
|
||||||
|
btrfs subvolume delete "$1"
|
||||||
|
}
|
||||||
|
|
||||||
|
# Delete old roots older than 30 days
|
||||||
|
for i in $(find /btrfs_tmp/old_roots/ -maxdepth 1 -mtime +30); do
|
||||||
|
delete_subvolume_recursively "$i"
|
||||||
|
done
|
||||||
|
|
||||||
|
# Create new root
|
||||||
|
btrfs subvolume create /btrfs_tmp/root
|
||||||
|
umount /btrfs_tmp
|
||||||
|
'';
|
||||||
|
|
||||||
|
# Dont nuke all the files. We wanna keep something
|
||||||
|
fileSystems."/persist".neededForBoot = true;
|
||||||
|
environment.persistence."/persist/system" = {
|
||||||
|
hideMounts = true;
|
||||||
|
directories = [
|
||||||
|
"/etc/nixos"
|
||||||
|
"/var/log"
|
||||||
|
"/var/lib/bluetooth"
|
||||||
|
"/var/lib/nixos"
|
||||||
|
"/var/lib/systemd/coredump"
|
||||||
|
"/etc/NetworkManager/system-connections"
|
||||||
|
{ directory = "/var/lib/colord"; user = "colord"; group = "colord"; mode = "u=rwx, g=rx, o="; }
|
||||||
|
];
|
||||||
|
files = [
|
||||||
|
"/etc/machine-id"
|
||||||
|
"/etc/ssh/ssh_host_rsa_key"
|
||||||
|
"/etc/ssh/ssh_host_ed25519_key"
|
||||||
|
"/etc/ssh/ssh_host_rsa_key.pub"
|
||||||
|
"/etc/ssh/ssh_host_ed25519_key.pub"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
programs.fuse.userAllowOther = true;
|
||||||
|
|
||||||
|
home-manager = {
|
||||||
|
extraSpecialArgs = { inherit inputs; };
|
||||||
|
users = {
|
||||||
|
"snorre" = import ./home.nix;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
users.users."snorre" =
|
||||||
|
{
|
||||||
|
isNormalUser = true;
|
||||||
|
initialPassword = "1234";
|
||||||
|
extraGroups = [
|
||||||
|
"networkmanager"
|
||||||
|
"audio"
|
||||||
|
"wheel"
|
||||||
|
];
|
||||||
|
|
||||||
|
shell = pkgs.zsh;
|
||||||
|
};
|
||||||
|
|
||||||
|
# Programs to enable
|
||||||
|
programs.zsh.enable = true; # Better shell than bash
|
||||||
|
|
||||||
|
# Fuck nano, all my homies hate nano
|
||||||
|
programs.nano.enable = false;
|
||||||
|
|
||||||
|
# Delete old entries to
|
||||||
|
nix = {
|
||||||
|
gc = {
|
||||||
|
automatic = true;
|
||||||
|
options = "--delete-older-than 7d";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
stylix.base16Scheme = "${pkgs.base16-schemes}/share/themes/eighties.yaml";
|
||||||
|
stylix.autoEnable = true;
|
||||||
|
stylix.polarity = "dark";
|
||||||
|
|
||||||
|
stylix.cursor.package = pkgs.bibata-cursors;
|
||||||
|
stylix.cursor.name = "Bibata-Modern-Ice";
|
||||||
|
stylix.cursor.size = 24;
|
||||||
|
|
||||||
|
networking.hostName = "nixos-vm"; # Define your hostname.
|
||||||
|
networking.networkmanager.enable = true; # Easiest to use and most distros use this by default.
|
||||||
|
|
||||||
|
# Set your time zone.
|
||||||
|
time.timeZone = "Europe/Copenhagen";
|
||||||
|
|
||||||
|
|
||||||
|
# Select internationalisation properties.
|
||||||
|
i18n.defaultLocale = "en_US.UTF-8";
|
||||||
|
console = {
|
||||||
|
keyMap = "dk";
|
||||||
|
};
|
||||||
|
|
||||||
|
# List packages installed in system profile. To search, run:
|
||||||
|
# $ nix search wget
|
||||||
|
environment.systemPackages = with pkgs; [
|
||||||
|
wget
|
||||||
|
curl
|
||||||
|
git
|
||||||
|
|
||||||
|
neovim
|
||||||
|
];
|
||||||
|
|
||||||
|
# Remove message when running commands as sudo
|
||||||
|
security.sudo = {
|
||||||
|
enable = true;
|
||||||
|
extraConfig = ''
|
||||||
|
Defaults lecture = never
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
services.openssh = {
|
||||||
|
enable = true;
|
||||||
|
settings = {
|
||||||
|
PasswordAuthentication = true;
|
||||||
|
AllowUsers = null;
|
||||||
|
PermitRootLogin = "no";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
# This option defines the first version of NixOS you have installed on this particular machine,
|
||||||
|
# and is used to maintain compatibility with application data (e.g. databases) created on older NixOS versions.
|
||||||
|
#
|
||||||
|
# Most users should NEVER change this value after the initial install, for any reason,
|
||||||
|
# even if you've upgraded your system to a new NixOS release.
|
||||||
|
#
|
||||||
|
# This value does NOT affect the Nixpkgs version your packages and OS are pulled from,
|
||||||
|
# so changing it will NOT upgrade your system.
|
||||||
|
#
|
||||||
|
# This value being lower than the current NixOS release does NOT mean your system is
|
||||||
|
# out of date, out of support, or vulnerable.
|
||||||
|
#
|
||||||
|
# Do NOT change this value unless you have manually inspected all the changes it would make to your configuration,
|
||||||
|
# and migrated your data accordingly.
|
||||||
|
#
|
||||||
|
# For more information, see `man configuration.nix` or https://nixos.org/manual/nixos/stable/options#opt-system.stateVersion .
|
||||||
|
system.stateVersion = "23.11"; # Did you read the comment?
|
||||||
|
|
||||||
|
}
|
||||||
|
|
72
hosts/nixos-vm/disko-luks.nix
Executable file
72
hosts/nixos-vm/disko-luks.nix
Executable file
|
@ -0,0 +1,72 @@
|
||||||
|
{ device ? throw "Set this to your disk device, e.g. /dev/sda"
|
||||||
|
, ...
|
||||||
|
}: {
|
||||||
|
disko.devices = {
|
||||||
|
disk = {
|
||||||
|
main = {
|
||||||
|
inherit device;
|
||||||
|
type = "disk";
|
||||||
|
content = {
|
||||||
|
type = "gpt";
|
||||||
|
partitions = {
|
||||||
|
ESP = {
|
||||||
|
size = "512M";
|
||||||
|
type = "EF00";
|
||||||
|
content = {
|
||||||
|
type = "filesystem";
|
||||||
|
format = "vfat";
|
||||||
|
mountpoint = "/boot";
|
||||||
|
mountOptions = [
|
||||||
|
"defaults"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
swap = {
|
||||||
|
size = "8G";
|
||||||
|
content = {
|
||||||
|
type = "swap";
|
||||||
|
resumeDevice = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
# Fill until 8gb are left
|
||||||
|
luks = {
|
||||||
|
size = "100%";
|
||||||
|
content = {
|
||||||
|
type = "luks";
|
||||||
|
name = "crypted";
|
||||||
|
# disable settings.keyFile if you want to use interactive password entry
|
||||||
|
passwordFile = null; # Interactive
|
||||||
|
settings = {
|
||||||
|
allowDiscards = true;
|
||||||
|
keyFile = null;
|
||||||
|
};
|
||||||
|
# additionalKeyFiles = [ "/tmp/additionalSecret.key" ];
|
||||||
|
content = {
|
||||||
|
type = "btrfs";
|
||||||
|
extraArgs = [ "-f" ];
|
||||||
|
subvolumes = {
|
||||||
|
"/root" = {
|
||||||
|
mountpoint = "/";
|
||||||
|
mountOptions = [ "compress=zstd" "noatime" ];
|
||||||
|
};
|
||||||
|
"/persist" = {
|
||||||
|
mountpoint = "/persist";
|
||||||
|
mountOptions = [ "subvol=persist" "compress=zstd" "noatime" ];
|
||||||
|
};
|
||||||
|
"/nix" = {
|
||||||
|
mountpoint = "/nix";
|
||||||
|
mountOptions = [ "subvol=nix" "compress=zstd" "noatime" ];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
25
hosts/nixos-vm/hardware-configuration.nix
Executable file
25
hosts/nixos-vm/hardware-configuration.nix
Executable file
|
@ -0,0 +1,25 @@
|
||||||
|
# Do not modify this file! It was generated by ‘nixos-generate-config’
|
||||||
|
# and may be overwritten by future invocations. Please make changes
|
||||||
|
# to /etc/nixos/configuration.nix instead.
|
||||||
|
{ config, lib, pkgs, modulesPath, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
imports =
|
||||||
|
[
|
||||||
|
(modulesPath + "/profiles/qemu-guest.nix")
|
||||||
|
];
|
||||||
|
|
||||||
|
boot.initrd.availableKernelModules = [ "ahci" "xhci_pci" "virtio_pci" "sr_mod" "virtio_blk" ];
|
||||||
|
boot.initrd.kernelModules = [ ];
|
||||||
|
boot.kernelModules = [ "kvm-intel" ];
|
||||||
|
boot.extraModulePackages = [ ];
|
||||||
|
|
||||||
|
# Enables DHCP on each ethernet and wireless interface. In case of scripted networking
|
||||||
|
# (the default) this is the recommended approach. When using systemd-networkd it's
|
||||||
|
# still possible to use this option, but it's recommended to use it in conjunction
|
||||||
|
# with explicit per-interface declarations with `networking.interfaces.<interface>.useDHCP`.
|
||||||
|
networking.useDHCP = lib.mkDefault true;
|
||||||
|
# networking.interfaces.enp1s0.useDHCP = lib.mkDefault true;
|
||||||
|
|
||||||
|
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
|
||||||
|
}
|
57
hosts/nixos-vm/home.nix
Executable file
57
hosts/nixos-vm/home.nix
Executable file
|
@ -0,0 +1,57 @@
|
||||||
|
{ config, pkgs, inputs, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
imports = [
|
||||||
|
inputs.impermanence.nixosModules.home-manager.impermanence
|
||||||
|
|
||||||
|
../../modules/editors/nixvim
|
||||||
|
../../modules/shells/zsh.nix
|
||||||
|
];
|
||||||
|
|
||||||
|
home.username = "snorre";
|
||||||
|
home.homeDirectory = "/home/snorre";
|
||||||
|
|
||||||
|
home.packages = with pkgs; [
|
||||||
|
file
|
||||||
|
nixpkgs-fmt
|
||||||
|
jump
|
||||||
|
];
|
||||||
|
|
||||||
|
zsh.jump.enable = true;
|
||||||
|
zsh.jump.show-destination = true;
|
||||||
|
|
||||||
|
# Let home-manager manage itself
|
||||||
|
programs.home-manager.enable = true;
|
||||||
|
|
||||||
|
home.sessionVariables = {
|
||||||
|
EDITOR = "nvim";
|
||||||
|
};
|
||||||
|
|
||||||
|
home.stateVersion = "23.11";
|
||||||
|
|
||||||
|
home.persistence."/persist/home" = {
|
||||||
|
directories = [
|
||||||
|
"Downloads"
|
||||||
|
"Music"
|
||||||
|
"Pictures"
|
||||||
|
"Documents"
|
||||||
|
"Videos"
|
||||||
|
".gnupg"
|
||||||
|
".ssh"
|
||||||
|
".local"
|
||||||
|
".jump"
|
||||||
|
{
|
||||||
|
directory = ".factorio";
|
||||||
|
method = "symlink";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
directory = ".local/share/Steam";
|
||||||
|
method = "symlink";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
files = [
|
||||||
|
".gitconfig"
|
||||||
|
];
|
||||||
|
allowOther = true;
|
||||||
|
};
|
||||||
|
}
|
49
install.sh
Executable file
49
install.sh
Executable file
|
@ -0,0 +1,49 @@
|
||||||
|
#! /usr/bin/env nix-shell
|
||||||
|
#! nix-shell -i bash -p git
|
||||||
|
|
||||||
|
if [ "$#" -ne 3 ]; then
|
||||||
|
cat << EOF
|
||||||
|
usage: sudo ./install.sh <disk> <swap> <encrypted: true/false>
|
||||||
|
EOF
|
||||||
|
exit
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Download disko config
|
||||||
|
curl https://gitlab.com/SpoodyTheOne/nixos-config/-/raw/master/modules/disko/disko-luks.nix -o /tmp/disko.nix
|
||||||
|
curl https://gitlab.com/SpoodyTheOne/nixos-config/-/raw/master/modules/disko/disko-btrfs-impermanence.nix -o /tmp/disko-btrfs-impermanence.nix
|
||||||
|
|
||||||
|
echo "During partitioning you will be asked for a password. This password is used when booting. It will be asked for twice"
|
||||||
|
sudo nix --experimental-features "nix-command flakes" \
|
||||||
|
run github:nix-community/disko -- \
|
||||||
|
--mode disko /tmp/disko.nix \
|
||||||
|
--arg device "\"$1\"" \
|
||||||
|
--arg swap-size "\"$2\""
|
||||||
|
--arg swap-size "\"$3\""
|
||||||
|
|
||||||
|
sudo nixos-generate-config --no-filesystems --root /mnt
|
||||||
|
sudo mv /mnt/etc/nixos/hardware-configuration.nix /tmp # Move configuration away
|
||||||
|
sudo rm -rf /mnt/etc/nixos # Nuke config folder so we can clone
|
||||||
|
sudo git clone https://gitlab.com/SpoodyTheOne/nixos-config.git /mnt/etc/nixos # Clone config
|
||||||
|
|
||||||
|
# Move hardware configuration
|
||||||
|
sudo mv /tmp/hardware-configuration.nix /mnt/etc/nixos/hosts/bootstrap
|
||||||
|
# go to /etc/nixos
|
||||||
|
cd /mnt/etc/nixos
|
||||||
|
# Add hardware configuration to git for nix to recognize it
|
||||||
|
sudo git add .
|
||||||
|
|
||||||
|
echo -n
|
||||||
|
echo -e "\x1b[33mYou will now be placed in vim, Please edit the bootstrap config to match the arguments given to the script\x1b[37m"
|
||||||
|
sleep 5
|
||||||
|
|
||||||
|
sudo vim /mnt/etc/nixos/flake.nix +63
|
||||||
|
|
||||||
|
echo -n
|
||||||
|
echo -e "\x1b[31mThe system will install in 5 seconds. If you think you misconfigured flake.nix please press ctrl-c now to cancel\x1b[37m"
|
||||||
|
sleep 5
|
||||||
|
|
||||||
|
# Copy configuration to permanent storage so its not nuked on reboot
|
||||||
|
sudo cp -r /mnt/etc/nixos /mnt/persist
|
||||||
|
sudo nixos-install --root /mnt --flake /mnt/etc/nixos#bootstrap
|
||||||
|
|
||||||
|
echo -e "\x1b[32mIf no errors occured please reboot and follow the 'After reboot' section at https://gitlab.com/SpoodyTheOne/nixos-config";
|
80
modules/disko/delete-on-boot.nix
Executable file
80
modules/disko/delete-on-boot.nix
Executable file
|
@ -0,0 +1,80 @@
|
||||||
|
{ lib
|
||||||
|
, persistExtraDirectories
|
||||||
|
, persistExtraFiles
|
||||||
|
, users ? {}
|
||||||
|
, extraConfig ? {}
|
||||||
|
, ...
|
||||||
|
}:
|
||||||
|
|
||||||
|
{
|
||||||
|
boot.initrd.postDeviceCommands = lib.mkAfter ''
|
||||||
|
# Prepare temporary folder
|
||||||
|
mkdir /btrfs_tmp
|
||||||
|
|
||||||
|
# Open encrypted partition
|
||||||
|
# cryptsetup luksOpen /dev/sda3 crypted
|
||||||
|
|
||||||
|
# Mount unencrypted partition in temp folder
|
||||||
|
mount /dev/mapper/crypted /btrfs_tmp
|
||||||
|
|
||||||
|
# Check if root subvolume exists in partition
|
||||||
|
if [[ -e /btrfs_tmp/root ]]; then
|
||||||
|
# If a folder for old roots doesnt exist we create one
|
||||||
|
mkdir -p /btrfs_tmp/old_roots
|
||||||
|
# Get timestamp for naming roots
|
||||||
|
timestamp=$(date --date="@$(stat -c %Y /btrfs_tmp/root)" "+%Y-%m-%-d_%H:%M:%S")
|
||||||
|
# Move old root into folder
|
||||||
|
mv /btrfs_tmp/root "/btrfs_tmp/old_roots/$timestamp"
|
||||||
|
fi
|
||||||
|
|
||||||
|
delete_subvolume_recursively() {
|
||||||
|
IFS=$'\n'
|
||||||
|
for i in $(btrfs subvolume list -o "$1" | cut -f 9- -d ' '); do
|
||||||
|
delete_subvolume_recursively "btrfs_tmp/$i"
|
||||||
|
done
|
||||||
|
btrfs subvolume delete "$1"
|
||||||
|
}
|
||||||
|
|
||||||
|
# Delete old roots older than 30 days
|
||||||
|
for i in $(find /btrfs_tmp/old_roots/ -maxdepth 1 -mtime +30); do
|
||||||
|
delete_subvolume_recursively "$i"
|
||||||
|
done
|
||||||
|
|
||||||
|
# Create new root
|
||||||
|
btrfs subvolume create /btrfs_tmp/root
|
||||||
|
umount /btrfs_tmp
|
||||||
|
'';
|
||||||
|
|
||||||
|
# Dont nuke all the files. We wanna keep something
|
||||||
|
fileSystems."/persist".neededForBoot = true;
|
||||||
|
environment.persistence."/persist/system" = {
|
||||||
|
hideMounts = true;
|
||||||
|
directories = [
|
||||||
|
"/etc/nixos"
|
||||||
|
"/var/log"
|
||||||
|
"/var/lib/bluetooth"
|
||||||
|
"/var/lib/nixos"
|
||||||
|
"/var/lib/systemd/coredump"
|
||||||
|
"/etc/NetworkManager/system-connections"
|
||||||
|
{ directory = "/var/lib/colord"; user = "colord"; group = "colord"; mode = "u=rwx, g=rx, o="; }
|
||||||
|
] ++ (if (persistExtraDirectories == null) then [ ] else persistExtraDirectories);
|
||||||
|
|
||||||
|
files = [
|
||||||
|
"/etc/machine-id"
|
||||||
|
"/etc/ssh/ssh_host_rsa_key"
|
||||||
|
"/etc/ssh/ssh_host_ed25519_key"
|
||||||
|
"/etc/ssh/ssh_host_rsa_key.pub"
|
||||||
|
"/etc/ssh/ssh_host_ed25519_key.pub"
|
||||||
|
] ++ (if (persistExtraFiles == null) then [ ] else persistExtraFiles);
|
||||||
|
|
||||||
|
inherit users;
|
||||||
|
};
|
||||||
|
|
||||||
|
# environment.etc = {
|
||||||
|
# "group".source = "/persist/system/etc/group";
|
||||||
|
# "passwd".source = "/persist/system/etc/passwd";
|
||||||
|
# "shadow".source = "/persist/system/etc/shadow";
|
||||||
|
# };
|
||||||
|
|
||||||
|
programs.fuse.userAllowOther = true;
|
||||||
|
}
|
18
modules/disko/disko-btrfs-impermanence.nix
Normal file
18
modules/disko/disko-btrfs-impermanence.nix
Normal file
|
@ -0,0 +1,18 @@
|
||||||
|
{
|
||||||
|
type = "btrfs";
|
||||||
|
extraArgs = [ "-f" ];
|
||||||
|
subvolumes = {
|
||||||
|
"/root" = {
|
||||||
|
mountpoint = "/";
|
||||||
|
mountOptions = [ "compress=zstd" "noatime" ];
|
||||||
|
};
|
||||||
|
"/persist" = {
|
||||||
|
mountpoint = "/persist";
|
||||||
|
mountOptions = [ "subvol=persist" "compress=zstd" "noatime" ];
|
||||||
|
};
|
||||||
|
"/nix" = {
|
||||||
|
mountpoint = "/nix";
|
||||||
|
mountOptions = [ "subvol=nix" "compress=zstd" "noatime" ];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
62
modules/disko/disko-luks.nix
Executable file
62
modules/disko/disko-luks.nix
Executable file
|
@ -0,0 +1,62 @@
|
||||||
|
{ device ? throw "Set this to your disk device, e.g. /dev/sda"
|
||||||
|
, swap-size ? "0"
|
||||||
|
, encrypted ? false
|
||||||
|
, ...
|
||||||
|
}: {
|
||||||
|
disko.devices = {
|
||||||
|
disk = {
|
||||||
|
main = {
|
||||||
|
inherit device;
|
||||||
|
type = "disk";
|
||||||
|
content = {
|
||||||
|
type = "gpt";
|
||||||
|
partitions = {
|
||||||
|
ESP = {
|
||||||
|
size = "512M";
|
||||||
|
type = "EF00";
|
||||||
|
content = {
|
||||||
|
type = "filesystem";
|
||||||
|
format = "vfat";
|
||||||
|
mountpoint = "/boot";
|
||||||
|
mountOptions = [
|
||||||
|
"defaults"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
swap = if swap-size == "0" then {} else {
|
||||||
|
size = swap-size;
|
||||||
|
content = {
|
||||||
|
type = "swap";
|
||||||
|
resumeDevice = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
# Fill until 8gb are left
|
||||||
|
root = if encrypted then {
|
||||||
|
size = "100%";
|
||||||
|
content = {
|
||||||
|
type = "luks";
|
||||||
|
name = "crypted";
|
||||||
|
# disable settings.keyFile if you want to use interactive password entry
|
||||||
|
passwordFile = null; # Interactive
|
||||||
|
settings = {
|
||||||
|
allowDiscards = true;
|
||||||
|
keyFile = null;
|
||||||
|
};
|
||||||
|
# additionalKeyFiles = [ "/tmp/additionalSecret.key" ];
|
||||||
|
content = (import ./disko-btrfs-impermanence.nix);
|
||||||
|
};
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
size = "100%";
|
||||||
|
content = (import ./disko-btrfs-impermanence.nix);
|
||||||
|
};
|
||||||
|
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
31
modules/disko/impermanence-home.nix
Executable file
31
modules/disko/impermanence-home.nix
Executable file
|
@ -0,0 +1,31 @@
|
||||||
|
{ extraDirectories
|
||||||
|
, extraFiles
|
||||||
|
, username ? throw "need to know the username"
|
||||||
|
, nixIndexEnabled ? false
|
||||||
|
, ...
|
||||||
|
}:
|
||||||
|
|
||||||
|
{
|
||||||
|
home.persistence."/persist/home/${username}" = {
|
||||||
|
directories = [
|
||||||
|
# "Downloads" # no.
|
||||||
|
"Documents"
|
||||||
|
"Music"
|
||||||
|
"Pictures"
|
||||||
|
"Videos"
|
||||||
|
".gnupg"
|
||||||
|
".ssh"
|
||||||
|
".local"
|
||||||
|
".cache/mesa_shader_cache"
|
||||||
|
".cache/mesa_shader_cache_db"
|
||||||
|
# TODO: Move this shit into work user
|
||||||
|
] ++ (if (extraDirectories == null) then [ ] else extraDirectories);
|
||||||
|
files = [
|
||||||
|
".gitconfig"
|
||||||
|
# ".zsh_history"
|
||||||
|
] ++ (if (extraFiles == null) then [ ] else extraFiles)
|
||||||
|
# ++ (if nixIndexEnabled then [ ".cache/nix-index" ] else [])
|
||||||
|
;
|
||||||
|
allowOther = true;
|
||||||
|
};
|
||||||
|
}
|
63
modules/drivers/nvidia.nix
Executable file
63
modules/drivers/nvidia.nix
Executable file
|
@ -0,0 +1,63 @@
|
||||||
|
{ config, pkgs, lib, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
nixpkgs.config.nvidia.acceptLicense = true;
|
||||||
|
services.xserver.videoDrivers = [ "nvidia" ];
|
||||||
|
|
||||||
|
boot.kernelParams = [ "nvidia.NVreg_PreserveVideoMemoryAllocations=1" ];
|
||||||
|
|
||||||
|
hardware.graphics = {
|
||||||
|
enable = true;
|
||||||
|
enable32Bit = true;
|
||||||
|
extraPackages = with pkgs; [
|
||||||
|
nvidia-vaapi-driver
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
hardware.nvidia = {
|
||||||
|
|
||||||
|
package = config.boot.kernelPackages.nvidiaPackages.stable;
|
||||||
|
modesetting.enable = true;
|
||||||
|
open = false;
|
||||||
|
nvidiaSettings = true;
|
||||||
|
dynamicBoost.enable = false;
|
||||||
|
|
||||||
|
powerManagement = {
|
||||||
|
enable = true;
|
||||||
|
finegrained = false;
|
||||||
|
};
|
||||||
|
|
||||||
|
prime = {
|
||||||
|
sync.enable = true;
|
||||||
|
intelBusId = "PCI:0:2:0";
|
||||||
|
nvidiaBusId = "PCI:1:0:0";
|
||||||
|
|
||||||
|
# offload = {
|
||||||
|
# enable = true;
|
||||||
|
# enableOffloadCmd = true;
|
||||||
|
# };
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
specialisation = {
|
||||||
|
Battery.configuration = {
|
||||||
|
system.nixos.tags = [ "Battery" ];
|
||||||
|
boot.extraModprobeConfig = ''
|
||||||
|
blacklist nouveau
|
||||||
|
options nouveau modeset=0
|
||||||
|
'';
|
||||||
|
|
||||||
|
services.udev.extraRules = ''s
|
||||||
|
# Remove NVIDIA USB xHCI Host Controller devices, if present
|
||||||
|
ACTION=="add", SUBSYSTEM=="pci", ATTR{vendor}=="0x10de", ATTR{class}=="0x0c0330", ATTR{power/control}="auto", ATTR{remove}="1"
|
||||||
|
# Remove NVIDIA USB Type-C UCSI devices, if present
|
||||||
|
ACTION=="add", SUBSYSTEM=="pci", ATTR{vendor}=="0x10de", ATTR{class}=="0x0c8000", ATTR{power/control}="auto", ATTR{remove}="1"
|
||||||
|
# Remove NVIDIA Audio devices, if present
|
||||||
|
ACTION=="add", SUBSYSTEM=="pci", ATTR{vendor}=="0x10de", ATTR{class}=="0x040300", ATTR{power/control}="auto", ATTR{remove}="1"
|
||||||
|
# Remove NVIDIA VGA/3D controller devices
|
||||||
|
ACTION=="add", SUBSYSTEM=="pci", ATTR{vendor}=="0x10de", ATTR{class}=="0x03[0-9]*", ATTR{power/control}="auto", ATTR{remove}="1"
|
||||||
|
'';
|
||||||
|
boot.blacklistedKernelModules = [ "nouveau" "nvidia" "nvidia_drm" "nvidia_modeset" ];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
39
modules/editors/nixvim/default.nix
Executable file
39
modules/editors/nixvim/default.nix
Executable file
|
@ -0,0 +1,39 @@
|
||||||
|
{ config, pkgs, lib, inputs, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
imports = [
|
||||||
|
inputs.nixvim.homeManagerModules.default
|
||||||
|
|
||||||
|
./plugins/lualine.nix
|
||||||
|
./plugins/undotree.nix
|
||||||
|
./plugins/telescope.nix
|
||||||
|
./plugins/lsp.nix
|
||||||
|
./plugins/lsp-lines.nix
|
||||||
|
./plugins/cmp.nix
|
||||||
|
./plugins/wilder.nix
|
||||||
|
./plugins/nvim-ts-comment-context.nix
|
||||||
|
./plugins/treesitter.nix
|
||||||
|
./plugins/vimtex.nix
|
||||||
|
# ./plugins/neorg.nix
|
||||||
|
# ./plugins/image.nix
|
||||||
|
# ./plugins/treesitter.nix
|
||||||
|
./plugins/which-key.nix
|
||||||
|
|
||||||
|
./syntax/fsharp.nix
|
||||||
|
|
||||||
|
./extra.nix
|
||||||
|
./options.nix
|
||||||
|
./keymaps.nix
|
||||||
|
];
|
||||||
|
|
||||||
|
programs.nixvim = {
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
# opts.performance.byteCompileLua = {
|
||||||
|
# enable = true;
|
||||||
|
# plugins = true;
|
||||||
|
# };
|
||||||
|
|
||||||
|
# colorschemes.nord.enable = true;
|
||||||
|
};
|
||||||
|
}
|
70
modules/editors/nixvim/extra.nix
Executable file
70
modules/editors/nixvim/extra.nix
Executable file
|
@ -0,0 +1,70 @@
|
||||||
|
{ config, pkgs, lib, ... }:
|
||||||
|
{
|
||||||
|
programs.nixvim.extraConfigLua = lib.strings.concatLines ([
|
||||||
|
''
|
||||||
|
vim.cmd([[
|
||||||
|
augroup highlight_yank
|
||||||
|
autocmd!
|
||||||
|
au TextYankPost * silent! lua vim.highlight.on_yank{higroup="IncSearch", timeout=100}
|
||||||
|
augroup END
|
||||||
|
]])
|
||||||
|
|
||||||
|
''
|
||||||
|
]
|
||||||
|
);
|
||||||
|
|
||||||
|
programs.nixvim.extraPlugins = [
|
||||||
|
# actions-preview.nvim
|
||||||
|
(pkgs.vimUtils.buildVimPlugin {
|
||||||
|
name = "actions-preview.nvim";
|
||||||
|
src = pkgs.fetchFromGitHub {
|
||||||
|
owner = "aznhe21";
|
||||||
|
repo = "actions-preview.nvim";
|
||||||
|
rev = "9f52a01c374318e91337697ebed51c6fae57f8a4";
|
||||||
|
hash = "sha256-lYjsv8y1fMuTGpBF/iG7cm/a7tLdh748vJhVsSp/Iz8=";
|
||||||
|
};
|
||||||
|
})
|
||||||
|
|
||||||
|
# (pkgs.vimUtils.buildVimPlugin {
|
||||||
|
# name = "fsharp-vim";
|
||||||
|
# src = pkgs.fetchFromGitHub {
|
||||||
|
# owner = "DrTom";
|
||||||
|
# repo = "fsharp-vim";
|
||||||
|
# rev = "81f51e7155c3df0f56e48b894aba8cb65a9cc04b";
|
||||||
|
# hash = "sha256-cSsUVG3MbjGD6bheZ+k1bxkDx0fZ17kbKqgBNywOaZc=";
|
||||||
|
# };
|
||||||
|
# })
|
||||||
|
|
||||||
|
# fsharp-language-server
|
||||||
|
# (pkgs.vimUtils.buildVimPlugin {
|
||||||
|
# name = "fsharp-language-server";
|
||||||
|
# src = pkgs.fetchFromGitHub {
|
||||||
|
# owner = "fsprojects";
|
||||||
|
# repo = "fsharp-language-server";
|
||||||
|
# rev = "471439c562c484f2fe57adfd54485e7c1ee4ca29";
|
||||||
|
# hash = "";
|
||||||
|
# };
|
||||||
|
# })
|
||||||
|
|
||||||
|
]
|
||||||
|
++
|
||||||
|
(
|
||||||
|
if config.programs.nixvim.plugins.neorg.enable
|
||||||
|
then [
|
||||||
|
(pkgs.vimUtils.buildVimPlugin {
|
||||||
|
inherit (pkgs.luaPackages.lua-utils-nvim) pname version src;
|
||||||
|
})
|
||||||
|
|
||||||
|
(pkgs.vimUtils.buildVimPlugin {
|
||||||
|
inherit (pkgs.luaPackages.pathlib-nvim) pname version src;
|
||||||
|
})
|
||||||
|
|
||||||
|
(pkgs.vimUtils.buildVimPlugin {
|
||||||
|
inherit (pkgs.luaPackages.nvim-nio) pname version src;
|
||||||
|
})
|
||||||
|
]
|
||||||
|
else [ ]
|
||||||
|
)
|
||||||
|
;
|
||||||
|
|
||||||
|
}
|
75
modules/editors/nixvim/keymaps.nix
Executable file
75
modules/editors/nixvim/keymaps.nix
Executable file
|
@ -0,0 +1,75 @@
|
||||||
|
{ ... }:
|
||||||
|
{
|
||||||
|
programs.nixvim.globals.mapleader = " ";
|
||||||
|
programs.nixvim.globals.maplocalleader = ",";
|
||||||
|
|
||||||
|
programs.nixvim.keymaps = [
|
||||||
|
{
|
||||||
|
key = "gl";
|
||||||
|
action = "<cmd>lua vim.diagnostic.open_float()<cr>";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
key = "<leader>u";
|
||||||
|
action = "<cmd>UndotreeToggle<cr>";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
key = "<leader>f";
|
||||||
|
action = "<cmd>Telescope fd<cr>";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
key = "<leader>g";
|
||||||
|
action = "<cmd>Telescope live_grep<cr>";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
key = "<leader>D";
|
||||||
|
action = "<cmd>Telescope diagnostics<cr>";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
key = "<leader>b";
|
||||||
|
action = "<cmd>Telescope buffers<cr>";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
key = "<leader>s";
|
||||||
|
action = "<cmd>Telescope lsp_document_symbols<cr>";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
key = "<leader>w";
|
||||||
|
action = "<C-W>";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
# Unbind F1
|
||||||
|
key = "<F1>";
|
||||||
|
action = "";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
|
||||||
|
programs.nixvim.autoCmd = [
|
||||||
|
{
|
||||||
|
desc = "LSP Actions";
|
||||||
|
event = "LspAttach";
|
||||||
|
callback = {
|
||||||
|
__raw = ''
|
||||||
|
function(event)
|
||||||
|
local opts = { buffer = event.buf }
|
||||||
|
|
||||||
|
-- these will be buffer-local keybindings
|
||||||
|
-- because they only work if you have an active language server
|
||||||
|
|
||||||
|
vim.keymap.set('n', 'K', '<cmd>lua vim.lsp.buf.hover()<cr>', opts)
|
||||||
|
vim.keymap.set('n', 'gd', '<cmd>Telescope lsp_definitions<cr>', opts)
|
||||||
|
vim.keymap.set('n', 'gD', '<cmd>lua vim.lsp.buf.declaration()<cr>', opts)
|
||||||
|
vim.keymap.set('n', 'gi', '<cmd>Telescope lsp_implementations<cr>', opts)
|
||||||
|
vim.keymap.set('n', 'go', '<cmd>Telescope lsp_type_definitions<cr>', opts)
|
||||||
|
vim.keymap.set('n', 'gr', '<cmd>Telescope lsp_references<cr>', opts)
|
||||||
|
vim.keymap.set('n', 'gs', '<cmd>lua vim.lsp.buf.signature_help()<cr>', opts)
|
||||||
|
vim.keymap.set('n', '<leader>r', '<cmd>lua vim.lsp.buf.rename()<cr>', opts)
|
||||||
|
vim.keymap.set({ 'n', 'x' }, '<F3>', '<cmd>lua vim.lsp.buf.format({async = true})<cr>', opts)
|
||||||
|
-- vim.keymap.set('n', '<leader>a', '<cmd>lua vim.lsp.buf.code_action()<cr>', opts)
|
||||||
|
vim.keymap.set("n", "<leader>a", require("actions-preview").code_actions, opts)
|
||||||
|
vim.keymap.set("n", "gh", "<cmd>ClangdSwitchSourceHeader<cr>", opts)
|
||||||
|
end
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
}
|
||||||
|
];
|
||||||
|
}
|
23
modules/editors/nixvim/options.nix
Executable file
23
modules/editors/nixvim/options.nix
Executable file
|
@ -0,0 +1,23 @@
|
||||||
|
{ ... }:
|
||||||
|
{
|
||||||
|
programs.nixvim.opts = {
|
||||||
|
number = true;
|
||||||
|
relativenumber = true;
|
||||||
|
nuw = 1;
|
||||||
|
scrolloff = 8;
|
||||||
|
signcolumn = "yes";
|
||||||
|
termguicolors = true;
|
||||||
|
|
||||||
|
# undodir = lib.concatStrings [ xdg.stateHome "nvim/undodir" ];
|
||||||
|
undofile = true;
|
||||||
|
|
||||||
|
ignorecase = true;
|
||||||
|
smartcase = true;
|
||||||
|
cmdheight = 1;
|
||||||
|
smarttab = true;
|
||||||
|
expandtab = true;
|
||||||
|
shiftwidth = 2;
|
||||||
|
tabstop = 2;
|
||||||
|
softtabstop = 2;
|
||||||
|
};
|
||||||
|
}
|
69
modules/editors/nixvim/plugins/cmp.nix
Executable file
69
modules/editors/nixvim/plugins/cmp.nix
Executable file
|
@ -0,0 +1,69 @@
|
||||||
|
{ config, ... }:
|
||||||
|
{
|
||||||
|
# programs.nixvim.plugins.cmp-vsnip.enable = true;
|
||||||
|
# programs.nixvim.plugins.cmp_luasnip.enable = true;
|
||||||
|
programs.nixvim.plugins.cmp-nvim-lsp-signature-help.enable = true;
|
||||||
|
programs.nixvim.plugins.cmp-latex-symbols.enable = true;
|
||||||
|
programs.nixvim.plugins.cmp-nvim-lsp.enable = true;
|
||||||
|
|
||||||
|
programs.nixvim.plugins.cmp = {
|
||||||
|
enable = true;
|
||||||
|
autoEnableSources = true;
|
||||||
|
settings = {
|
||||||
|
sources = [
|
||||||
|
{ name = "nvim_lsp"; }
|
||||||
|
{ name = "path"; }
|
||||||
|
# { name = "buffer"; }
|
||||||
|
{ name = "nvim_lsp_signature_help"; }
|
||||||
|
{ name = "latex_symbols"; }
|
||||||
|
{ name = "vsnip"; }
|
||||||
|
]
|
||||||
|
++
|
||||||
|
(
|
||||||
|
if config.programs.nixvim.plugins.orgmode.enable
|
||||||
|
then [{ name = "orgmode"; }]
|
||||||
|
else [ ]
|
||||||
|
)
|
||||||
|
++
|
||||||
|
(
|
||||||
|
if config.programs.nixvim.plugins.neorg.enable
|
||||||
|
then [{ name = "neorg"; }]
|
||||||
|
else [ ]
|
||||||
|
)
|
||||||
|
;
|
||||||
|
|
||||||
|
mapping = {
|
||||||
|
"<CR>" = "cmp.mapping.confirm({ select = true })";
|
||||||
|
"<C-y>" = "cmp.mapping.confirm({ select = true })";
|
||||||
|
|
||||||
|
"<Tab>" = ''
|
||||||
|
function(fallback)
|
||||||
|
if cmp.visible() then
|
||||||
|
cmp.select_next_item()
|
||||||
|
else
|
||||||
|
fallback()
|
||||||
|
end
|
||||||
|
end
|
||||||
|
'';
|
||||||
|
|
||||||
|
"<S-Tab>" = ''
|
||||||
|
function(fallback)
|
||||||
|
if cmp.visible() then
|
||||||
|
cmp.select_prev_item()
|
||||||
|
else
|
||||||
|
fallback()
|
||||||
|
end
|
||||||
|
end
|
||||||
|
'';
|
||||||
|
|
||||||
|
"<C-Space>" = "cmp.mapping.complete()";
|
||||||
|
};
|
||||||
|
|
||||||
|
# snippet.expand = ''
|
||||||
|
# function(args)
|
||||||
|
# require("luasnip").lsp_expand(args.body)
|
||||||
|
# end
|
||||||
|
# '';
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
12
modules/editors/nixvim/plugins/image.nix
Executable file
12
modules/editors/nixvim/plugins/image.nix
Executable file
|
@ -0,0 +1,12 @@
|
||||||
|
{ pkgs, ... }:
|
||||||
|
{
|
||||||
|
programs.nixvim.plugins.image = {
|
||||||
|
enable = true;
|
||||||
|
backend = "ueberzug";
|
||||||
|
};
|
||||||
|
|
||||||
|
programs.nixvim.plugins.clipboard-image = {
|
||||||
|
enable = true;
|
||||||
|
clipboardPackage = pkgs.wl-clipboard;
|
||||||
|
};
|
||||||
|
}
|
6
modules/editors/nixvim/plugins/lsp-lines.nix
Executable file
6
modules/editors/nixvim/plugins/lsp-lines.nix
Executable file
|
@ -0,0 +1,6 @@
|
||||||
|
{ ... }:
|
||||||
|
{
|
||||||
|
programs.nixvim.plugins.lsp-lines = {
|
||||||
|
enable = true;
|
||||||
|
};
|
||||||
|
}
|
75
modules/editors/nixvim/plugins/lsp.nix
Executable file
75
modules/editors/nixvim/plugins/lsp.nix
Executable file
|
@ -0,0 +1,75 @@
|
||||||
|
{ ... }:
|
||||||
|
{
|
||||||
|
programs.nixvim.plugins.zig.enable = true;
|
||||||
|
programs.nixvim.plugins.lsp = {
|
||||||
|
enable = true;
|
||||||
|
servers = {
|
||||||
|
lua_ls.enable = true;
|
||||||
|
nil_ls = {
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
settings = {
|
||||||
|
formatting.command = [ "nixpkgs-fmt" ];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
clangd = {
|
||||||
|
enable = true;
|
||||||
|
# package = null; # Install your own clang fucker # actually dont, its aids
|
||||||
|
cmd = [ "clangd" "--background-index" "--suggest-missing-includes" ];
|
||||||
|
};
|
||||||
|
|
||||||
|
# As much as i hate python, it is useful for CTF and quick scripts
|
||||||
|
pylsp = {
|
||||||
|
enable = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
zls = {
|
||||||
|
enable = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
ts_ls = {
|
||||||
|
enable = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
rust_analyzer = {
|
||||||
|
enable = true;
|
||||||
|
package = null; # Install your own rust
|
||||||
|
cargoPackage = null; # Install your own rust
|
||||||
|
installCargo = false; # Install your own rust
|
||||||
|
rustcPackage = null; # Install your own rust
|
||||||
|
installRustc = false; # Install your own rust
|
||||||
|
};
|
||||||
|
|
||||||
|
# TODO: Create a flake.nix for texlabs so its not installed globally.
|
||||||
|
texlab = {
|
||||||
|
enable = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
fsautocomplete = {
|
||||||
|
enable = false;
|
||||||
|
cmd = [ "fsautocomplete" "--adaptive-lsp-server-enabled" "--verbose" ];
|
||||||
|
filetypes = [ "fsharp" "fs" ];
|
||||||
|
package = null; # Fuck you too
|
||||||
|
|
||||||
|
# settings = {
|
||||||
|
# AutomaticWorkspaceInit = true;
|
||||||
|
#
|
||||||
|
# callback = {
|
||||||
|
# __raw = ''
|
||||||
|
# function()
|
||||||
|
# print("fsharp lsp")
|
||||||
|
# end
|
||||||
|
# '';
|
||||||
|
# };
|
||||||
|
# };
|
||||||
|
};
|
||||||
|
|
||||||
|
csharp_ls = {
|
||||||
|
enable = true;
|
||||||
|
# package = null; # Fuck c#, install it yourself if you need it
|
||||||
|
};
|
||||||
|
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
4
modules/editors/nixvim/plugins/lualine.nix
Executable file
4
modules/editors/nixvim/plugins/lualine.nix
Executable file
|
@ -0,0 +1,4 @@
|
||||||
|
{ ... }:
|
||||||
|
{
|
||||||
|
programs.nixvim.plugins.lualine.enable = true;
|
||||||
|
}
|
26
modules/editors/nixvim/plugins/neorg.nix
Executable file
26
modules/editors/nixvim/plugins/neorg.nix
Executable file
|
@ -0,0 +1,26 @@
|
||||||
|
{ ... }:
|
||||||
|
{
|
||||||
|
programs.nixvim.plugins.neorg = {
|
||||||
|
enable = true;
|
||||||
|
# lazyLoading = true;
|
||||||
|
|
||||||
|
modules = {
|
||||||
|
"core.defaults" = {
|
||||||
|
__empty = null;
|
||||||
|
};
|
||||||
|
|
||||||
|
"core.dirman" = {
|
||||||
|
config = {
|
||||||
|
workspaces = {
|
||||||
|
notes = "~/Documents/notes";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
"core.concealer" = {
|
||||||
|
__empty = null;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
}
|
6
modules/editors/nixvim/plugins/nvim-ts-comment-context.nix
Executable file
6
modules/editors/nixvim/plugins/nvim-ts-comment-context.nix
Executable file
|
@ -0,0 +1,6 @@
|
||||||
|
{ lib, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
programs.nixvim.plugins.ts-context-commentstring.enable = true;
|
||||||
|
programs.nixvim.plugins.comment.enable = true;
|
||||||
|
}
|
10
modules/editors/nixvim/plugins/orgmode.nix
Executable file
10
modules/editors/nixvim/plugins/orgmode.nix
Executable file
|
@ -0,0 +1,10 @@
|
||||||
|
{ ... }:
|
||||||
|
{
|
||||||
|
programs.nixvim.plugins.orgmode = {
|
||||||
|
enable = true;
|
||||||
|
settings = {
|
||||||
|
org_agenda_files = "~/documents/notes/**/*";
|
||||||
|
org_default_notes_file = "~/documents/notes/index.org";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
5
modules/editors/nixvim/plugins/telescope.nix
Executable file
5
modules/editors/nixvim/plugins/telescope.nix
Executable file
|
@ -0,0 +1,5 @@
|
||||||
|
{...}:
|
||||||
|
{
|
||||||
|
programs.nixvim.plugins.telescope.enable = true;
|
||||||
|
programs.nixvim.plugins.web-devicons.enable = true;
|
||||||
|
}
|
13
modules/editors/nixvim/plugins/treesitter.nix
Executable file
13
modules/editors/nixvim/plugins/treesitter.nix
Executable file
|
@ -0,0 +1,13 @@
|
||||||
|
{ ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
programs.nixvim.plugins.treesitter = {
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
settings = {
|
||||||
|
auto_install = false;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
programs.nixvim.plugins.treesitter-textobjects.enable = true;
|
||||||
|
}
|
4
modules/editors/nixvim/plugins/undotree.nix
Executable file
4
modules/editors/nixvim/plugins/undotree.nix
Executable file
|
@ -0,0 +1,4 @@
|
||||||
|
{ ... }:
|
||||||
|
{
|
||||||
|
programs.nixvim.plugins.undotree.enable = true;
|
||||||
|
}
|
12
modules/editors/nixvim/plugins/vimtex.nix
Executable file
12
modules/editors/nixvim/plugins/vimtex.nix
Executable file
|
@ -0,0 +1,12 @@
|
||||||
|
{ ... }:
|
||||||
|
{
|
||||||
|
programs.nixvim.plugins.vimtex = {
|
||||||
|
enable = true;
|
||||||
|
texlivePackage = null;
|
||||||
|
settings = {
|
||||||
|
compiler_method = "luatex";
|
||||||
|
view_method = "zathura";
|
||||||
|
quickfix_mode = 0;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
4
modules/editors/nixvim/plugins/which-key.nix
Executable file
4
modules/editors/nixvim/plugins/which-key.nix
Executable file
|
@ -0,0 +1,4 @@
|
||||||
|
{ ... }:
|
||||||
|
{
|
||||||
|
programs.nixvim.plugins.which-key.enable = true;
|
||||||
|
}
|
22
modules/editors/nixvim/plugins/wilder.nix
Executable file
22
modules/editors/nixvim/plugins/wilder.nix
Executable file
|
@ -0,0 +1,22 @@
|
||||||
|
{ ... }:
|
||||||
|
{
|
||||||
|
programs.nixvim.plugins.wilder = {
|
||||||
|
enable = true;
|
||||||
|
modes = [ ":" "/" "?" ];
|
||||||
|
enableCmdlineEnter = true;
|
||||||
|
acceptKey = "<CR>";
|
||||||
|
renderer = ''
|
||||||
|
wilder.popupmenu_renderer(
|
||||||
|
wilder.popupmenu_border_theme({
|
||||||
|
highlights = {
|
||||||
|
border = 'Normal', -- highlight to use for the border
|
||||||
|
},
|
||||||
|
left = { ' ', wilder.popupmenu_devicons() },
|
||||||
|
-- 'single', 'double', 'rounded' or 'solid'
|
||||||
|
-- can also be a list of 8 characters, see :h wilder#popupmenu_border_theme() for more details
|
||||||
|
border = 'rounded',
|
||||||
|
})
|
||||||
|
)
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
}
|
15
modules/editors/nixvim/syntax/fsharp.nix
Executable file
15
modules/editors/nixvim/syntax/fsharp.nix
Executable file
|
@ -0,0 +1,15 @@
|
||||||
|
{ pkgs, ... }:
|
||||||
|
{
|
||||||
|
xdg.configFile."nvim/syntax/fsharp.vim" =
|
||||||
|
let
|
||||||
|
git = pkgs.fetchFromGitHub {
|
||||||
|
owner = "lulu-berlin";
|
||||||
|
repo = "vim-fsharp";
|
||||||
|
rev = "1afff075e0a1bcbedcc52881454b99f58ec5bbfc";
|
||||||
|
sha256 = "sha256-tpEgCxZubyzz4z+JVep1R6F+mQidw/iAfRMTOF00v6U=";
|
||||||
|
};
|
||||||
|
in
|
||||||
|
{
|
||||||
|
source = "${git}/syntax/fsharp.vim";
|
||||||
|
};
|
||||||
|
}
|
8
modules/plymouth/blahaj.nix
Executable file
8
modules/plymouth/blahaj.nix
Executable file
|
@ -0,0 +1,8 @@
|
||||||
|
{pkgs, ...}:
|
||||||
|
{
|
||||||
|
boot.plymouth.enable = true;
|
||||||
|
boot.plymouth.themePackages = with pkgs; [
|
||||||
|
plymouth-blahaj-theme
|
||||||
|
];
|
||||||
|
boot.plymouth.theme = "blahaj";
|
||||||
|
}
|
13
modules/plymouth/default.nix
Executable file
13
modules/plymouth/default.nix
Executable file
|
@ -0,0 +1,13 @@
|
||||||
|
{pkgs, ...}:
|
||||||
|
{
|
||||||
|
boot.plymouth.enable = true;
|
||||||
|
# boot.plymouth.themePackages = with pkgs; [
|
||||||
|
# plymouth-blahaj-theme
|
||||||
|
# ];
|
||||||
|
# boot.plymouth.theme = "blahaj";
|
||||||
|
|
||||||
|
# boot.plymouth.theme = "plymouth-modern-bgrt";
|
||||||
|
# boot.plymouth.themePackages = [
|
||||||
|
# (pkgs.callPackage ./modern-bgrt.nix {})
|
||||||
|
# ];
|
||||||
|
}
|
277
modules/plymouth/modern-bgrt.nix
Executable file
277
modules/plymouth/modern-bgrt.nix
Executable file
|
@ -0,0 +1,277 @@
|
||||||
|
{ lib
|
||||||
|
, stdenv
|
||||||
|
, fetchFromGitHub
|
||||||
|
, unstableGitUpdater
|
||||||
|
, pkgs
|
||||||
|
}:
|
||||||
|
|
||||||
|
stdenv.mkDerivation {
|
||||||
|
name = "modern-bgrt";
|
||||||
|
version = "0-unstable-2023-03-10";
|
||||||
|
|
||||||
|
src = fetchFromGitHub {
|
||||||
|
repo = "plymouth-modern-bgrt";
|
||||||
|
owner = "glics";
|
||||||
|
rev = "a795623409865db39f3a8df2effaeb8b388ca36c";
|
||||||
|
hash = "sha256-WslJCrv8LyWBrZuu8xstuafr7piR/QY8L52c+sAk9vU=";
|
||||||
|
};
|
||||||
|
|
||||||
|
dontConfigure = true;
|
||||||
|
dontBuild = true;
|
||||||
|
|
||||||
|
nativeBuildInputs = [ pkgs.imagemagick ];
|
||||||
|
|
||||||
|
installPhase = ''
|
||||||
|
runHook preInstall
|
||||||
|
|
||||||
|
# mkdir -p $out/share/plymouth/themes/modern-bgrt
|
||||||
|
# cp -r $src/theme/{*} $out/share/plymouth/themes/modern-bgrt/
|
||||||
|
# substituteInPlace $out/share/plymouth/themes/modern-bgrt/*.plymouth --replace '/usr/share/plymouth/themes/plymouth-modern-bgrt' "$out/share/plymouth/themes/modern-bgrt/images"
|
||||||
|
#
|
||||||
|
# substituteInPlace $out/share/plymouth/themes/modern-bgrt/*.plymouth --replace '/usr/share/plymouth/themes/plymouth-modern-bgrt/bgrt.script' "$out/share/plymouth/themes/modern-bgrt/bgrt.script"
|
||||||
|
|
||||||
|
mkdir /tmp/plymouth-theme
|
||||||
|
cp -r $src/* /tmp/plymouth-theme
|
||||||
|
|
||||||
|
substituteInPlace /tmp/plymouth-theme/install.sh --replace '/usr' "$out"
|
||||||
|
substituteInPlace /tmp/plymouth-theme/install.sh --replace 'convert /sys/firmware/acpi/bgrt/image theme/bgrt.png' "convert theme/bgrt.jpeg theme/bgrt.png"
|
||||||
|
substituteInPlace /tmp/plymouth-theme/install.sh --replace '[[ !' "[["
|
||||||
|
|
||||||
|
substituteInPlace /tmp/plymouth-theme/install.sh --replace 'convert' "${pkgs.imagemagick}/bin/convert"
|
||||||
|
|
||||||
|
echo "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
|
||||||
|
PwBkf//Z
|
||||||
|
" | base64 --decode > /tmp/plymouth-theme/bgrt.jpg
|
||||||
|
|
||||||
|
# curl "https://static-community.frame.work/original/2X/1/191e90201ff9e3276524e10064310c3fb439cde7.jpeg" -o "/tmp/plymouth-theme/theme/bgrt.jpeg"
|
||||||
|
|
||||||
|
bash /tmp/plymouth-theme/install.sh
|
||||||
|
|
||||||
|
runHook postInstall
|
||||||
|
'';
|
||||||
|
|
||||||
|
passthru.updateScript = unstableGitUpdater { };
|
||||||
|
|
||||||
|
meta = with lib; {
|
||||||
|
description = "This theme uses your UEFI logo for seamless booting";
|
||||||
|
homepage = "https://github.com/glics/plymouth-modern-bgrt";
|
||||||
|
license = licenses.mit;
|
||||||
|
maintainers = with maintainers; [ me ];
|
||||||
|
platforms = platforms.all;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
74
modules/portals/xdg-desktop-portal-termfilechooser.nix
Executable file
74
modules/portals/xdg-desktop-portal-termfilechooser.nix
Executable file
|
@ -0,0 +1,74 @@
|
||||||
|
{ lib
|
||||||
|
, stdenv
|
||||||
|
, fetchFromGitHub
|
||||||
|
, unstableGitUpdater
|
||||||
|
, pkgs
|
||||||
|
}:
|
||||||
|
|
||||||
|
stdenv.mkDerivation {
|
||||||
|
name = "xdg-desktop-portal-termfilechooser";
|
||||||
|
version = "1.0.0";
|
||||||
|
|
||||||
|
src = fetchFromGitHub {
|
||||||
|
repo = "xdg-desktop-portal-termfilechooser";
|
||||||
|
owner = "GermainZ";
|
||||||
|
rev = "71dc7ab06751e51de392b9a7af2b50018e40e062";
|
||||||
|
hash = "sha256-645hoLhQNncqfLKcYCgWLbSrTRUNELh6EAdgUVq3ypM=";
|
||||||
|
};
|
||||||
|
|
||||||
|
dontConfigure = true;
|
||||||
|
|
||||||
|
nativeBuildInputs = with pkgs; [
|
||||||
|
meson
|
||||||
|
ninja
|
||||||
|
gcc
|
||||||
|
pkg-config
|
||||||
|
scdoc
|
||||||
|
inih
|
||||||
|
systemdMinimal
|
||||||
|
];
|
||||||
|
|
||||||
|
buildPhase = ''
|
||||||
|
runHook preBuild
|
||||||
|
|
||||||
|
# mv $src/meson.build $src/meson.build.old
|
||||||
|
# cat $src/meson.build.old > $src/meson.build
|
||||||
|
#
|
||||||
|
|
||||||
|
mkdir -p /tmp/xdg-desktop-portal-termfilechooser/
|
||||||
|
|
||||||
|
cp -r $src/* /tmp/xdg-desktop-portal-termfilechooser
|
||||||
|
|
||||||
|
substituteInPlace /tmp/xdg-desktop-portal-termfilechooser/meson.build --replace "'-D_POSIX_C_SOURCE=200809L'," "'-D_POSIX_C_SOURCE=200809L','-O3'"
|
||||||
|
|
||||||
|
cd /tmp/xdg-desktop-portal-termfilechooser/
|
||||||
|
|
||||||
|
meson build
|
||||||
|
ninja -C build
|
||||||
|
|
||||||
|
runHook postBuild
|
||||||
|
'';
|
||||||
|
|
||||||
|
installPhase = ''
|
||||||
|
runHook preInstall
|
||||||
|
|
||||||
|
mkdir -p $out/share/{dbus-1/services,xdg-desktop-portal/portals}
|
||||||
|
|
||||||
|
cp /tmp/xdg-desktop-portal-termfilechooser/build/*.service $out/share/dbus-1/services/
|
||||||
|
cp /tmp/xdg-desktop-portal-termfilechooser/termfilechooser.portal $out/share/xdg-desktop-portal/portals/
|
||||||
|
mkdir -p $out/libexec
|
||||||
|
cp /tmp/xdg-desktop-portal-termfilechooser/build/xdg-desktop-portal-termfilechooser $out/libexec
|
||||||
|
|
||||||
|
runHook postInstall
|
||||||
|
'';
|
||||||
|
|
||||||
|
meta = with lib; {
|
||||||
|
homepage = "https://github.com/GermainZ/xdg-desktop-portal-termfilechooser";
|
||||||
|
description = "xdg-desktop-portal backend for choosing files with your favorite file chooser.";
|
||||||
|
license = licenses.mit;
|
||||||
|
maintainers = with maintainers; [ SpoodyTheOne ];
|
||||||
|
mainProgram = "xdg-desktop-portal-termfilechooser";
|
||||||
|
platforms = platforms.linux;
|
||||||
|
};
|
||||||
|
|
||||||
|
}
|
18
modules/programs/alacritty.nix
Executable file
18
modules/programs/alacritty.nix
Executable file
|
@ -0,0 +1,18 @@
|
||||||
|
{ ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
programs.alacritty = {
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
settings = {
|
||||||
|
window = {
|
||||||
|
dynamic_padding = true;
|
||||||
|
decorations = "None";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
home.sessionVariables.TERM = "alacritty";
|
||||||
|
home.sessionVariables.TERMINAL = "alacritty";
|
||||||
|
home.sessionVariables.TERMCMD = "alacritty";
|
||||||
|
}
|
59
modules/programs/dunst.nix
Executable file
59
modules/programs/dunst.nix
Executable file
|
@ -0,0 +1,59 @@
|
||||||
|
{ pkgs, lib, config, ... }:
|
||||||
|
{
|
||||||
|
services.dunst.enable = true;
|
||||||
|
services.dunst.settings = {
|
||||||
|
global = {
|
||||||
|
monitor = "mouse";
|
||||||
|
width = "300";
|
||||||
|
height = "(0, 300)";
|
||||||
|
offset = "10x50";
|
||||||
|
scale = 0;
|
||||||
|
progress_bar = true;
|
||||||
|
progress_bar_height = 10;
|
||||||
|
progress_bar_frame_width = 1;
|
||||||
|
progress_bar_corner_radius = 5;
|
||||||
|
icon_corner_radius = 0;
|
||||||
|
|
||||||
|
# corner_radius = 4;
|
||||||
|
|
||||||
|
seperator_height = 2;
|
||||||
|
|
||||||
|
padding = 8;
|
||||||
|
horizontal_padding = 8;
|
||||||
|
text_icon_padding = 0;
|
||||||
|
|
||||||
|
frame_width = 1;
|
||||||
|
gap_size = 0;
|
||||||
|
|
||||||
|
seperator_color = "auto";
|
||||||
|
|
||||||
|
sort = "yes";
|
||||||
|
|
||||||
|
format = "<b>%s</b>\n%b";
|
||||||
|
|
||||||
|
alignment = "right";
|
||||||
|
vertical_alignment = "center";
|
||||||
|
|
||||||
|
ellipsize = "middle";
|
||||||
|
|
||||||
|
stack_duplicates = false;
|
||||||
|
show_indicators = false;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
"[spotify-album-art-waybar]" = {
|
||||||
|
appname = "Spotify";
|
||||||
|
script = builtins.toString (pkgs.writeShellScript "album_art.sh" ''
|
||||||
|
#!/bin/bash
|
||||||
|
album_art=$(${pkgs.playerctl}/bin/playerctl -p spotify metadata mpris:artUrl)
|
||||||
|
if [[ -z $album_art ]]
|
||||||
|
then
|
||||||
|
# spotify is dead, we should die too.
|
||||||
|
exit
|
||||||
|
fi
|
||||||
|
${pkgs.curl}/bin/curl -s "''${album_art}" --output "/tmp/cover.jpeg"
|
||||||
|
echo "/tmp/cover.jpeg"
|
||||||
|
'');
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
129
modules/programs/firefox.nix
Executable file
129
modules/programs/firefox.nix
Executable file
|
@ -0,0 +1,129 @@
|
||||||
|
{ config
|
||||||
|
, pkgs
|
||||||
|
, ...
|
||||||
|
}:
|
||||||
|
let
|
||||||
|
lock-false = {
|
||||||
|
Value = false;
|
||||||
|
Status = "locked";
|
||||||
|
};
|
||||||
|
lock-true = {
|
||||||
|
Value = true;
|
||||||
|
Status = "locked";
|
||||||
|
};
|
||||||
|
in
|
||||||
|
{
|
||||||
|
programs = {
|
||||||
|
firefox = {
|
||||||
|
enable = true;
|
||||||
|
languagePacks = [ "en-US" ];
|
||||||
|
|
||||||
|
/*
|
||||||
|
---- PROFILES ----
|
||||||
|
*/
|
||||||
|
profiles.defualt = {
|
||||||
|
search.engines = {
|
||||||
|
"Google".metaData.hidden = true;
|
||||||
|
"Bing".metaData.hidden = true;
|
||||||
|
"Ecosia".metaData.hidden = true;
|
||||||
|
"Facebook".metaData.hidden = true;
|
||||||
|
"Twitter".metaData.hidden = true;
|
||||||
|
"Youtube".metaData.hidden = true;
|
||||||
|
"Wikipedia".metaData.hidden = true;
|
||||||
|
"Reddit".metaData.hidden = true;
|
||||||
|
};
|
||||||
|
search.default = "DuckDuckGo";
|
||||||
|
search.privateDefault = "DuckDuckGo";
|
||||||
|
search.force = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
/*
|
||||||
|
---- POLICIES ----
|
||||||
|
*/
|
||||||
|
# Check about:policies#documentation for options.
|
||||||
|
policies = {
|
||||||
|
DisableTelemetry = true;
|
||||||
|
DisableFirefoxStudies = true;
|
||||||
|
EnableTrackingProtection = {
|
||||||
|
Value = true;
|
||||||
|
Locked = true;
|
||||||
|
Cryptomining = true;
|
||||||
|
Fingerprinting = true;
|
||||||
|
};
|
||||||
|
DisablePocket = true;
|
||||||
|
DisableFirefoxAccounts = true;
|
||||||
|
DisableAccounts = true;
|
||||||
|
DisableFirefoxScreenshots = true;
|
||||||
|
OverrideFirstRunPage = "";
|
||||||
|
OverridePostUpdatePage = "";
|
||||||
|
DontCheckDefaultBrowser = true;
|
||||||
|
DisplayBookmarksToolbar = "newtab"; # alternatives: "always" or "newtab"
|
||||||
|
DisplayMenuBar = "default-off"; # alternatives: "always", "never" or "default-on"
|
||||||
|
SearchBar = "unified"; # alternative: "separate"
|
||||||
|
|
||||||
|
/*
|
||||||
|
---- EXTENSIONS ----
|
||||||
|
*/
|
||||||
|
# Check about:support for extension/add-on ID strings.
|
||||||
|
# Valid strings for installation_mode are "allowed", "blocked",
|
||||||
|
# "force_installed" and "normal_installed".
|
||||||
|
ExtensionSettings = {
|
||||||
|
"*".installation_mode = "blocked"; # blocks all addons except the ones specified below
|
||||||
|
# uBlock Origin:
|
||||||
|
"uBlock0@raymondhill.net" = {
|
||||||
|
install_url = "https://addons.mozilla.org/firefox/downloads/latest/ublock-origin/latest.xpi";
|
||||||
|
installation_mode = "force_installed";
|
||||||
|
};
|
||||||
|
# Privacy Badger:
|
||||||
|
"jid1-MnnxcxisBPnSXQ@jetpack" = {
|
||||||
|
install_url = "https://addons.mozilla.org/firefox/downloads/latest/privacy-badger17/latest.xpi";
|
||||||
|
installation_mode = "force_installed";
|
||||||
|
};
|
||||||
|
# bitwarden
|
||||||
|
"{446900e4-71c2-419f-a6a7-df9c091e268b}" = {
|
||||||
|
install_url = "https://addons.mozilla.org/firefox/downloads/latest/bitwarden-password-manager/latest.xpi";
|
||||||
|
installation_mode = "force_installed";
|
||||||
|
};
|
||||||
|
# FUCK youtube ai translated titles
|
||||||
|
"{458160b9-32eb-0f0c-8_d1-89ad3bdeb9dc}" = {
|
||||||
|
install_url = "https://addons.mozilla.org/firefox/downloads/latest/youtube-anti-translate/latext.xpi";
|
||||||
|
installation_mode = "force_installed";
|
||||||
|
};
|
||||||
|
# 1Password:
|
||||||
|
# "{d634138d-c276-4fc8-924b-40a0ea21d284}" = {
|
||||||
|
# install_url = "https://addons.mozilla.org/firefox/downloads/latest/1password-x-password-manager/latest.xpi";
|
||||||
|
# installation_mode = "force_installed";
|
||||||
|
# };
|
||||||
|
};
|
||||||
|
|
||||||
|
/*
|
||||||
|
---- PREFERENCES ----
|
||||||
|
*/
|
||||||
|
# Check about:config for options.
|
||||||
|
Preferences = {
|
||||||
|
"browser.contentblocking.category" = {
|
||||||
|
Value = "strict";
|
||||||
|
Status = "locked";
|
||||||
|
};
|
||||||
|
"extensions.pocket.enabled" = lock-false;
|
||||||
|
"extensions.screenshots.disabled" = lock-true;
|
||||||
|
"browser.topsites.contile.enabled" = lock-false;
|
||||||
|
"browser.formfill.enable" = lock-false;
|
||||||
|
"browser.search.suggest.enabled" = lock-false;
|
||||||
|
"browser.search.suggest.enabled.private" = lock-false;
|
||||||
|
"browser.urlbar.suggest.searches" = lock-false;
|
||||||
|
"browser.urlbar.showSearchSuggestionsFirst" = lock-false;
|
||||||
|
"browser.newtabpage.activity-stream.feeds.section.topstories" = lock-false;
|
||||||
|
"browser.newtabpage.activity-stream.feeds.snippets" = lock-false;
|
||||||
|
"browser.newtabpage.activity-stream.section.highlights.includePocket" = lock-false;
|
||||||
|
"browser.newtabpage.activity-stream.section.highlights.includeBookmarks" = lock-false;
|
||||||
|
"browser.newtabpage.activity-stream.section.highlights.includeDownloads" = lock-false;
|
||||||
|
"browser.newtabpage.activity-stream.section.highlights.includeVisited" = lock-false;
|
||||||
|
"browser.newtabpage.activity-stream.showSponsored" = lock-false;
|
||||||
|
"browser.newtabpage.activity-stream.system.showSponsored" = lock-false;
|
||||||
|
"browser.newtabpage.activity-stream.showSponsoredTopSites" = lock-false;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
21
modules/programs/hyprpaper.nix
Executable file
21
modules/programs/hyprpaper.nix
Executable file
|
@ -0,0 +1,21 @@
|
||||||
|
{ lib, config, ... }:
|
||||||
|
{
|
||||||
|
options = {
|
||||||
|
hyprpaper.wallpaper = lib.mkOption {
|
||||||
|
description = "Path to the wallpaper that should be used";
|
||||||
|
default = "";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
config = {
|
||||||
|
xdg.configFile."hypr/hyprpaper.conf".text =
|
||||||
|
# if builtins.pathExists config.hyprpaper.wallpaper then
|
||||||
|
if config.stylix.enable then
|
||||||
|
"
|
||||||
|
preload = ${config.stylix.image}
|
||||||
|
wallpaper = ,${config.stylix.image}
|
||||||
|
"
|
||||||
|
else "";
|
||||||
|
services.hyprpaper.enable = true;
|
||||||
|
};
|
||||||
|
}
|
0
modules/programs/keypassxc/default.nix
Executable file
0
modules/programs/keypassxc/default.nix
Executable file
15
modules/programs/mangohud.nix
Normal file
15
modules/programs/mangohud.nix
Normal file
|
@ -0,0 +1,15 @@
|
||||||
|
{ pkgs, config, lib, ... }:
|
||||||
|
{
|
||||||
|
programs.mangohud = {
|
||||||
|
enable = true;
|
||||||
|
settings = {
|
||||||
|
font_scale = lib.mkForce 1.0;
|
||||||
|
font_size = lib.mkForce 24;
|
||||||
|
font_size_text = lib.mkForce 24;
|
||||||
|
background_alpha = lib.mkForce 0.65;
|
||||||
|
alpha = lib.mkForce 1.0;
|
||||||
|
round_corners = lib.mkForce 4;
|
||||||
|
gpu_name = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
20
modules/programs/tmux.nix
Normal file
20
modules/programs/tmux.nix
Normal file
|
@ -0,0 +1,20 @@
|
||||||
|
{ pkgs, lib, config, ... }: {
|
||||||
|
programs.tmux = {
|
||||||
|
enable = true;
|
||||||
|
# Enable 24-hour clock
|
||||||
|
clock24 = true;
|
||||||
|
terminal = if config.programs.alacritty.enable then "alacritty" else lib.mkDefault;
|
||||||
|
baseIndex = 1;
|
||||||
|
mouse = true;
|
||||||
|
shell = "${pkgs.zsh}/bin/zsh";
|
||||||
|
# escapeTime = 150;
|
||||||
|
historyLimit = 50000;
|
||||||
|
|
||||||
|
extraConfig = lib.strings.concatStringsSep "\n" [
|
||||||
|
"set -g display-time 4000"
|
||||||
|
"set -g focus-events on"
|
||||||
|
"set-option -a terminal-features ',alacritty:RGB'"
|
||||||
|
"set-option -a terminal-overrides ',alacritty:Tc'"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
}
|
52
modules/programs/tofi.nix
Executable file
52
modules/programs/tofi.nix
Executable file
|
@ -0,0 +1,52 @@
|
||||||
|
{ lib, config, ...}: {
|
||||||
|
programs.tofi.enable = true;
|
||||||
|
|
||||||
|
# xdg.configFile."tofi/config".text = ''
|
||||||
|
# width = 100%
|
||||||
|
# height = 100%
|
||||||
|
# border-width = 0
|
||||||
|
# outline-width = 0
|
||||||
|
# padding-left = 35%
|
||||||
|
# padding-top = 30%
|
||||||
|
# result-spacing = 25
|
||||||
|
# num-results = 8
|
||||||
|
# font = monospace
|
||||||
|
# # background-color = #2a273fdd
|
||||||
|
# text-color = #e0def4
|
||||||
|
# input-color = #e0def4
|
||||||
|
# # text-cursor-color = #e0def4
|
||||||
|
# # selection-color = #c4a7e7
|
||||||
|
# prompt-background-padding = 5
|
||||||
|
# text-cursor-style = underscore
|
||||||
|
# text-cursor-corner-radius = 1
|
||||||
|
# # selection-match-color = #9ccfd8
|
||||||
|
# hide-cursor = false
|
||||||
|
# text-cursor = true
|
||||||
|
# '';
|
||||||
|
|
||||||
|
programs.tofi.settings = {
|
||||||
|
width = "35%";
|
||||||
|
height = "25%";
|
||||||
|
border-width = 1;
|
||||||
|
outline-width = 0;
|
||||||
|
corner-radius = 4;
|
||||||
|
# padding-left = "35%";
|
||||||
|
# padding-right = "30%";
|
||||||
|
result-spacing = 16;
|
||||||
|
num-results = 7;
|
||||||
|
prompt-background-padding = 5;
|
||||||
|
# text-cursor-tyle = "underscore";
|
||||||
|
text-cursor-corner-radius = 1;
|
||||||
|
hide-cursor = false;
|
||||||
|
text-cursor = true;
|
||||||
|
# font-size = lib.mkForce 18;
|
||||||
|
};
|
||||||
|
|
||||||
|
home.activation = {
|
||||||
|
# https://github.com/philj56/tofi/issues/115#issuecomment-1701748297
|
||||||
|
regenerateTofiCache = lib.hm.dag.entryAfter [ "writeBoundary" ] ''
|
||||||
|
tofi_cache=${config.xdg.cacheHome}/tofi-drun
|
||||||
|
[[ -f "$tofi_cache" ]] && rm "$tofi_cache"
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
}
|
236
modules/programs/waybar/default.nix
Executable file
236
modules/programs/waybar/default.nix
Executable file
|
@ -0,0 +1,236 @@
|
||||||
|
{ config, lib, pkgs, ... }:
|
||||||
|
with config.lib.stylix.colors.withHashtag;
|
||||||
|
with config.stylix.fonts;
|
||||||
|
{
|
||||||
|
|
||||||
|
stylix.targets.waybar.enable = false;
|
||||||
|
|
||||||
|
services.playerctld.enable = true;
|
||||||
|
services.playerctld.package = pkgs.playerctl;
|
||||||
|
|
||||||
|
programs.waybar = {
|
||||||
|
enable = true;
|
||||||
|
# style = ./style.css;
|
||||||
|
|
||||||
|
style = lib.mkForce
|
||||||
|
(''
|
||||||
|
@define-color base00 ${base00}; @define-color base01 ${base01}; @define-color base02 ${base02}; @define-color base03 ${base03};
|
||||||
|
@define-color base04 ${base04}; @define-color base05 ${base05}; @define-color base06 ${base06}; @define-color base07 ${base07};
|
||||||
|
|
||||||
|
@define-color base08 ${base08}; @define-color base09 ${base09}; @define-color base0A ${base0A}; @define-color base0B ${base0B};
|
||||||
|
@define-color base0C ${base0C}; @define-color base0D ${base0D}; @define-color base0E ${base0E}; @define-color base0F ${base0F};
|
||||||
|
|
||||||
|
* {
|
||||||
|
font-family: "${sansSerif.name}";
|
||||||
|
font-size: ${builtins.toString sizes.desktop}pt;
|
||||||
|
margin:0;
|
||||||
|
}
|
||||||
|
|
||||||
|
window#waybar {
|
||||||
|
background: transparent;
|
||||||
|
}
|
||||||
|
|
||||||
|
tooltip {
|
||||||
|
border-color: @base0D;
|
||||||
|
background: alpha(@base00, ${with config.stylix.opacity; builtins.toString desktop});
|
||||||
|
color: @base05;
|
||||||
|
}
|
||||||
|
''
|
||||||
|
+ (builtins.readFile ./style.css)
|
||||||
|
);
|
||||||
|
|
||||||
|
settings = {
|
||||||
|
|
||||||
|
test = {
|
||||||
|
layer = "top";
|
||||||
|
output = [ "eDP-1" ];
|
||||||
|
position = "top";
|
||||||
|
|
||||||
|
width = 1920;
|
||||||
|
|
||||||
|
modules-left = [
|
||||||
|
"cpu"
|
||||||
|
"memory"
|
||||||
|
"hyprland/workspaces"
|
||||||
|
"hyprland/window"
|
||||||
|
];
|
||||||
|
modules-center = [
|
||||||
|
# "image#album-art"
|
||||||
|
"mpris"
|
||||||
|
];
|
||||||
|
modules-right = [
|
||||||
|
"privacy"
|
||||||
|
"tray"
|
||||||
|
"wireplumber"
|
||||||
|
"network"
|
||||||
|
"backlight"
|
||||||
|
"battery"
|
||||||
|
"temperature"
|
||||||
|
"clock"
|
||||||
|
# "custom/power"
|
||||||
|
];
|
||||||
|
|
||||||
|
fixed-center = true;
|
||||||
|
|
||||||
|
"custom/power" = {
|
||||||
|
format = "⏻";
|
||||||
|
on-click = "systemctl $(echo \"poweroff\nreboot\nhibernate\" | tofi --prompt-text \"power option: \" --horizontal true --height 35 --width 20%)";
|
||||||
|
};
|
||||||
|
|
||||||
|
"network" = {
|
||||||
|
format = "Not connected";
|
||||||
|
format-wifi = "{essid} ";
|
||||||
|
format-ethernet = "{ipaddr}/{cidr} ";
|
||||||
|
format-disconnected = "";
|
||||||
|
tooltip-format = "{ifname} via {gwaddr}";
|
||||||
|
tooltip-format-wifi = "{essid} ({signalStrength}%)\n{ipaddr}/{cidr}";
|
||||||
|
tooltip-format-ethernet = "{ifname}";
|
||||||
|
tooltip-format-disconnected = "Disconnected";
|
||||||
|
max-length = 50;
|
||||||
|
};
|
||||||
|
|
||||||
|
"power-profiles-daemon" = {
|
||||||
|
format = "{icon}";
|
||||||
|
tooltip-format = "Power profile: {profile}\nDriver: {driver}";
|
||||||
|
tooltip = true;
|
||||||
|
format-icons = {
|
||||||
|
default = "";
|
||||||
|
performance = "";
|
||||||
|
balanced = "";
|
||||||
|
power-saver = "";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
"temperature" = {
|
||||||
|
critical-threshold = 80;
|
||||||
|
thermal-zone = 7;
|
||||||
|
format = " {temperatureC}°C";
|
||||||
|
};
|
||||||
|
|
||||||
|
"clock" = {
|
||||||
|
format = "{:%H:%M} ";
|
||||||
|
format-alt = "{:%A, %B %d, %Y (%R)} ";
|
||||||
|
tooltip-format = "{:%Y-%m-%d}";
|
||||||
|
calendar = {
|
||||||
|
mode = "year";
|
||||||
|
mode-mon-col = 3;
|
||||||
|
weeks-pos = "right";
|
||||||
|
on-scroll = 1;
|
||||||
|
format = {
|
||||||
|
months = "<span color='@base06'><b>{}</b></span>";
|
||||||
|
days = "<span color='@base06'><b>{}</b></span>";
|
||||||
|
weeks = "<span color='@base0D'><b>W{}</b></span>";
|
||||||
|
weekdays = "<span color='@base0C'><b>{}</b></span>";
|
||||||
|
today = "<span color='@base0E'><b><u>{}</u></b></span>";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
actions = {
|
||||||
|
on-click-right = "mode";
|
||||||
|
on-click-forward = "tz_up";
|
||||||
|
on-click-backward = "tz_down";
|
||||||
|
on-scroll-up = "shift_up";
|
||||||
|
on-scroll-down = "shift_down";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
"backlight" = {
|
||||||
|
format = "{percent}% ";
|
||||||
|
tooltip = false;
|
||||||
|
};
|
||||||
|
|
||||||
|
"cpu" = {
|
||||||
|
interval = 3;
|
||||||
|
format = " {usage}%";
|
||||||
|
# format-tooltip = ''
|
||||||
|
# load: {load}
|
||||||
|
# avg: {avg_frequency} GHz
|
||||||
|
# min: {min_frequency} GHz
|
||||||
|
# max: {max_frequency} GHz
|
||||||
|
# '';
|
||||||
|
|
||||||
|
# on-click = ''
|
||||||
|
# notify-send "CPU Stats" "avg: {avg_frequency} GHz"
|
||||||
|
# '';
|
||||||
|
|
||||||
|
max-length = 10;
|
||||||
|
};
|
||||||
|
|
||||||
|
"memory" = {
|
||||||
|
format = " {percentage}%";
|
||||||
|
# tooltip = true;
|
||||||
|
# tooltip-format = "{used}/{total}GiB used\n{swapUsed}/{totalSwap}GiB swap used";
|
||||||
|
};
|
||||||
|
|
||||||
|
"tray" = {
|
||||||
|
icon-size = 24;
|
||||||
|
spacing = 10;
|
||||||
|
};
|
||||||
|
|
||||||
|
"wireplumber" = {
|
||||||
|
format = "{volume}% {icon}";
|
||||||
|
format-muted = "";
|
||||||
|
format-icons = [ "" "" "" ];
|
||||||
|
on-click = "wpctl set-mute @DEFAULT_SINK@ toggle";
|
||||||
|
max-volume = 150;
|
||||||
|
scroll-step = 0.2;
|
||||||
|
};
|
||||||
|
|
||||||
|
"battery" = {
|
||||||
|
interval = 60;
|
||||||
|
full-at = 96;
|
||||||
|
states = {
|
||||||
|
warning = 30;
|
||||||
|
critical = 15;
|
||||||
|
};
|
||||||
|
format = "{capacity}% {icon}";
|
||||||
|
format-charging = "{capacity}% ";
|
||||||
|
|
||||||
|
format-icons = [ "" "" "" "" "" ];
|
||||||
|
max-length = 25;
|
||||||
|
};
|
||||||
|
|
||||||
|
"image#album-art" = {
|
||||||
|
exec = pkgs.writeShellScript "album_art.sh" ''
|
||||||
|
album_art=$(playerctl metadata | grep artUrl | awk '{ print $3 }')
|
||||||
|
if [[ -z $album_art ]]
|
||||||
|
then
|
||||||
|
# remove image
|
||||||
|
echo "/tmp/invalid.tiff";
|
||||||
|
# spotify is dead, we should die to.
|
||||||
|
exit
|
||||||
|
fi
|
||||||
|
echo "/tmp/cover.jpeg"
|
||||||
|
'';
|
||||||
|
size = 32;
|
||||||
|
interval = 2;
|
||||||
|
};
|
||||||
|
|
||||||
|
"mpris" = {
|
||||||
|
format = "{status_icon} {player_icon} {dynamic}";
|
||||||
|
|
||||||
|
player-icons = {
|
||||||
|
# default = "";
|
||||||
|
spotify = "";
|
||||||
|
firefox = "";
|
||||||
|
};
|
||||||
|
|
||||||
|
status-icons = {
|
||||||
|
paused = "";
|
||||||
|
playing = "";
|
||||||
|
stopped = "";
|
||||||
|
};
|
||||||
|
|
||||||
|
dynamic-order = [
|
||||||
|
"artist"
|
||||||
|
"title"
|
||||||
|
"position"
|
||||||
|
"length"
|
||||||
|
];
|
||||||
|
dynamic-seperator = ": ";
|
||||||
|
interval = 2;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
159
modules/programs/waybar/style.css
Executable file
159
modules/programs/waybar/style.css
Executable file
|
@ -0,0 +1,159 @@
|
||||||
|
#mpris {
|
||||||
|
color: @base05;
|
||||||
|
background-color: @base00;
|
||||||
|
|
||||||
|
border-radius: 0 0 4pt 4pt;
|
||||||
|
|
||||||
|
padding-left: 6pt;
|
||||||
|
padding-right: 6pt;
|
||||||
|
|
||||||
|
margin-left: 4pt;
|
||||||
|
margin-right: 4pt;
|
||||||
|
|
||||||
|
transition: width 0.2s ease;
|
||||||
|
transition: background-color 0.1s ease;
|
||||||
|
transition: color 0.1s ease;
|
||||||
|
}
|
||||||
|
|
||||||
|
#mpris.spotify {
|
||||||
|
background: @base0B;
|
||||||
|
color: @base00;
|
||||||
|
}
|
||||||
|
|
||||||
|
#clock {
|
||||||
|
background-color: @base0C;
|
||||||
|
color: @base00;
|
||||||
|
padding-left: 6pt;
|
||||||
|
padding-right: 12pt;
|
||||||
|
}
|
||||||
|
|
||||||
|
#battery {
|
||||||
|
background-color: @base0E;
|
||||||
|
color: @base00;
|
||||||
|
padding-left: 6pt;
|
||||||
|
padding-right: 12pt;
|
||||||
|
}
|
||||||
|
|
||||||
|
#backlight {
|
||||||
|
background-color: @base06;
|
||||||
|
color: @base00;
|
||||||
|
padding-left: 6pt;
|
||||||
|
padding-right: 12pt;
|
||||||
|
}
|
||||||
|
|
||||||
|
#wireplumber {
|
||||||
|
background-color: @base08;
|
||||||
|
color: @base00;
|
||||||
|
padding-left: 6pt;
|
||||||
|
padding-right: 12pt;
|
||||||
|
}
|
||||||
|
|
||||||
|
#custom-power {
|
||||||
|
background-color: @base08;
|
||||||
|
color: @base00;
|
||||||
|
padding-left: 8pt;
|
||||||
|
padding-right: 12pt;
|
||||||
|
}
|
||||||
|
|
||||||
|
#power-profiles-daemon {
|
||||||
|
background-color: @base0E;
|
||||||
|
color: @base00;
|
||||||
|
padding-left: 8pt;
|
||||||
|
padding-right: 13pt;
|
||||||
|
}
|
||||||
|
|
||||||
|
#cpu {
|
||||||
|
background-color: @base0B;
|
||||||
|
color: @base00;
|
||||||
|
padding-left: 6pt;
|
||||||
|
padding-right: 6pt;
|
||||||
|
}
|
||||||
|
|
||||||
|
#memory {
|
||||||
|
background-color: @base0E;
|
||||||
|
color: @base00;
|
||||||
|
padding-left: 6pt;
|
||||||
|
padding-right: 6pt;
|
||||||
|
}
|
||||||
|
|
||||||
|
#network {
|
||||||
|
background-color: @base0D;
|
||||||
|
color: @base00;
|
||||||
|
padding-left: 6pt;
|
||||||
|
padding-right: 12pt;
|
||||||
|
}
|
||||||
|
|
||||||
|
#tray, #privacy {
|
||||||
|
background-color: @base00;
|
||||||
|
padding-left: 6pt;
|
||||||
|
padding-right: 6pt;
|
||||||
|
transition: width 0.1s ease;
|
||||||
|
}
|
||||||
|
|
||||||
|
#privacy {
|
||||||
|
margin-right: 2pt;
|
||||||
|
border-radius: 0 0 4pt 4pt;
|
||||||
|
transition: height 0.1s ease;
|
||||||
|
}
|
||||||
|
|
||||||
|
#tray {
|
||||||
|
margin-left: 2pt;
|
||||||
|
border-radius: 0 0 0 4pt;
|
||||||
|
}
|
||||||
|
|
||||||
|
#temperature {
|
||||||
|
background-color: @base0D;
|
||||||
|
color: @base00;
|
||||||
|
padding-left: 6pt;
|
||||||
|
padding-right: 6pt;
|
||||||
|
transition: background-color 0.1s linear;
|
||||||
|
}
|
||||||
|
|
||||||
|
#temperature.critical {
|
||||||
|
background-color: @base08;
|
||||||
|
}
|
||||||
|
|
||||||
|
#workspaces button {
|
||||||
|
border-radius: 0;
|
||||||
|
/*border-bottom: 2px solid @base0E;*/
|
||||||
|
border-bottom: 0px;
|
||||||
|
border-bottom-style: solid;
|
||||||
|
border-bottom-color: @base0E;
|
||||||
|
|
||||||
|
transition: color 0.1s ease;
|
||||||
|
transition: border-bottom 0.1s ease;
|
||||||
|
}
|
||||||
|
|
||||||
|
#workspaces button.active {
|
||||||
|
color: @base0E;
|
||||||
|
border-bottom: 2px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#workspaces {
|
||||||
|
color: @base05;
|
||||||
|
background-color: @base00;
|
||||||
|
border-radius: 0 0 4pt 4pt;
|
||||||
|
padding-left: 6pt;
|
||||||
|
padding-right: 6pt;
|
||||||
|
|
||||||
|
border-radius: 0 0 4pt 0;
|
||||||
|
|
||||||
|
margin-right: 4pt;
|
||||||
|
|
||||||
|
transition: width 0.2s ease;
|
||||||
|
}
|
||||||
|
|
||||||
|
#window {
|
||||||
|
color: @base05;
|
||||||
|
background-color: @base00;
|
||||||
|
border-radius: 0 0 4pt 4pt;
|
||||||
|
padding-left: 6pt;
|
||||||
|
padding-right: 6pt;
|
||||||
|
|
||||||
|
transition: width 0.2s ease;
|
||||||
|
transition: background-color 0.1s ease;
|
||||||
|
}
|
||||||
|
|
||||||
|
window#waybar.empty #window {
|
||||||
|
background-color: transparent;
|
||||||
|
}
|
94
modules/shells/zsh.nix
Executable file
94
modules/shells/zsh.nix
Executable file
|
@ -0,0 +1,94 @@
|
||||||
|
{ pkgs, lib, config, ... }: {
|
||||||
|
|
||||||
|
options = {
|
||||||
|
zsh.jump = {
|
||||||
|
enable = lib.mkEnableOption "enables jump in zsh";
|
||||||
|
show-destination = lib.mkEnableOption "Echoes the folder jump changed to after jumping";
|
||||||
|
};
|
||||||
|
|
||||||
|
zsh.extraLines = lib.mkOption {
|
||||||
|
type = lib.types.listOf lib.types.str;
|
||||||
|
default = [ ];
|
||||||
|
description = "List of extra commands to run on zsh init";
|
||||||
|
};
|
||||||
|
|
||||||
|
zsh.histFile = lib.mkOption {
|
||||||
|
type = lib.types.str;
|
||||||
|
default = "$HOME/.zsh_history";
|
||||||
|
description = "Path to the zsh history file";
|
||||||
|
};
|
||||||
|
|
||||||
|
zsh.direnv = lib.mkEnableOption "Enable direnv hook";
|
||||||
|
};
|
||||||
|
|
||||||
|
config = {
|
||||||
|
programs.lsd.enable = true;
|
||||||
|
|
||||||
|
programs.zsh.enable = true;
|
||||||
|
programs.zsh.enableCompletion = true;
|
||||||
|
|
||||||
|
programs.zsh.dotDir = ".config/zsh";
|
||||||
|
|
||||||
|
programs.zsh.autosuggestion = {
|
||||||
|
enable = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
programs.zsh.syntaxHighlighting = {
|
||||||
|
enable = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
programs.zsh.history.path = config.zsh.histFile;
|
||||||
|
|
||||||
|
programs.zsh.shellAliases = {
|
||||||
|
ls = "lsd";
|
||||||
|
nix-rebuild = "nixos-rebuild --use-remote-sudo switch --flake /etc/nixos";
|
||||||
|
nd = "nix develop -c zsh";
|
||||||
|
};
|
||||||
|
|
||||||
|
programs.zsh.oh-my-zsh = {
|
||||||
|
enable = true;
|
||||||
|
theme = "robbyrussell";
|
||||||
|
plugins = [
|
||||||
|
"git"
|
||||||
|
"sudo"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
# programs.zsh.initExtra = lib.concatStringsSep "\n" ([
|
||||||
|
# "echo zsh"
|
||||||
|
# ] ++ lib.lists.optionals config.zsh.jump.enable
|
||||||
|
# "eval");
|
||||||
|
|
||||||
|
programs.zsh.initExtra = lib.concatStringsSep "\n" (
|
||||||
|
# Add any extra lines to the zsh config
|
||||||
|
config.zsh.extraLines ++
|
||||||
|
# Add jump shell script to list if jump is enabled
|
||||||
|
(
|
||||||
|
if config.zsh.jump.show-destination
|
||||||
|
then [
|
||||||
|
"eval \"$(jump shell zsh --bind=z)\""
|
||||||
|
''
|
||||||
|
j() {
|
||||||
|
z $1;
|
||||||
|
echo $(pwd)
|
||||||
|
}
|
||||||
|
''
|
||||||
|
]
|
||||||
|
else [ "eval \"$(jump shell zsh)\"" ]
|
||||||
|
)
|
||||||
|
++
|
||||||
|
(
|
||||||
|
if config.zsh.direnv then [ "eval \"$(direnv hook zsh)\"" ]
|
||||||
|
else [ ]
|
||||||
|
)
|
||||||
|
# ++
|
||||||
|
# (
|
||||||
|
# if config.programs.nix-index.enable && config.programs.nix-index.enableZshIntegration then
|
||||||
|
# [ "source ${pkgs.nix-index}/etc/profile.d/command-not-found.sh" ]
|
||||||
|
# else
|
||||||
|
# []
|
||||||
|
# )
|
||||||
|
);
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
42
modules/stylix/cursors/posy-improved/default.nix
Executable file
42
modules/stylix/cursors/posy-improved/default.nix
Executable file
|
@ -0,0 +1,42 @@
|
||||||
|
{ lib
|
||||||
|
, stdenvNoCC
|
||||||
|
, fetchFromGitHub
|
||||||
|
, unstableGitUpdater
|
||||||
|
, pkgs
|
||||||
|
}:
|
||||||
|
|
||||||
|
stdenvNoCC.mkDerivation {
|
||||||
|
name = "posy-cursors";
|
||||||
|
|
||||||
|
src = fetchFromGitHub {
|
||||||
|
repo = "posy-improved-cursor-linux";
|
||||||
|
owner = "simtrami";
|
||||||
|
rev = "bd2bac08bf01e25846a6643dd30e2acffa9517d4";
|
||||||
|
hash = "sha256-ndxz0KEU18ZKbPK2vTtEWUkOB/KqA362ipJMjVEgzYQ=";
|
||||||
|
};
|
||||||
|
|
||||||
|
dontConfigure = true;
|
||||||
|
dontBuild = true;
|
||||||
|
|
||||||
|
installPhase = ''
|
||||||
|
runHook preInstall
|
||||||
|
|
||||||
|
install -dm 755 $out/share/icons
|
||||||
|
cp -rf $src/Posy_Cursor* $out/share/icons
|
||||||
|
# cp -rf themes/* $out/share/icons/
|
||||||
|
|
||||||
|
runHook postInstall
|
||||||
|
'';
|
||||||
|
|
||||||
|
passthru.updateScript = unstableGitUpdater {};
|
||||||
|
|
||||||
|
meta = with lib; {
|
||||||
|
description = "Posy cursors for NixOS";
|
||||||
|
homepage = "https://github.com/simtrami/posy-improved-cursor-linux";
|
||||||
|
# license = licenses.mit;
|
||||||
|
maintainers = with maintainers; [ me ];
|
||||||
|
platforms = platforms.all;
|
||||||
|
};
|
||||||
|
|
||||||
|
# https://github.com/ripperhowls/Posys-Cursors-Improved-by-ripperhowls.git
|
||||||
|
}
|
34
modules/stylix/home/default.nix
Executable file
34
modules/stylix/home/default.nix
Executable file
|
@ -0,0 +1,34 @@
|
||||||
|
{ pkgs, ... }:
|
||||||
|
{
|
||||||
|
stylix.enable = true;
|
||||||
|
# stylix.image = ./nixos-wallpaper.png;
|
||||||
|
stylix.autoEnable = true;
|
||||||
|
stylix.fonts = {
|
||||||
|
serif = {
|
||||||
|
package = pkgs.dejavu_fonts;
|
||||||
|
name = "DejaVu Serif";
|
||||||
|
};
|
||||||
|
|
||||||
|
sansSerif = {
|
||||||
|
package = pkgs.dejavu_fonts;
|
||||||
|
name = "DejaVu Sans";
|
||||||
|
};
|
||||||
|
|
||||||
|
monospace = {
|
||||||
|
# package = (pkgs.nerdfonts.override {
|
||||||
|
# fonts =
|
||||||
|
# [
|
||||||
|
# "Mononoki"
|
||||||
|
# ];
|
||||||
|
# });
|
||||||
|
package = pkgs.nerd-fonts.mononoki;
|
||||||
|
name = "Mononoki Nerd Font";
|
||||||
|
};
|
||||||
|
|
||||||
|
emoji = {
|
||||||
|
package = pkgs.noto-fonts-emoji;
|
||||||
|
name = "Noto Color Emoji";
|
||||||
|
};
|
||||||
|
|
||||||
|
};
|
||||||
|
}
|
56
modules/users/main-user.nix
Executable file
56
modules/users/main-user.nix
Executable file
|
@ -0,0 +1,56 @@
|
||||||
|
{ pkgs, lib, config, ... }:
|
||||||
|
{
|
||||||
|
options = {
|
||||||
|
|
||||||
|
main-user = {
|
||||||
|
enable = lib.mkEnableOption "Enable main user";
|
||||||
|
name = lib.mkOption {
|
||||||
|
type = lib.types.str;
|
||||||
|
default = "default-user";
|
||||||
|
description = "Name of the user";
|
||||||
|
};
|
||||||
|
|
||||||
|
groups = lib.mkOption {
|
||||||
|
type = lib.types.listOf lib.types.str;
|
||||||
|
default = [ ];
|
||||||
|
description = "List of groups to add the user to";
|
||||||
|
};
|
||||||
|
|
||||||
|
sudo = lib.mkEnableOption "Should the user be in the sudoers group or not";
|
||||||
|
|
||||||
|
shell = lib.mkOption {
|
||||||
|
default = pkgs.zsh;
|
||||||
|
description = "The shell of the user";
|
||||||
|
};
|
||||||
|
|
||||||
|
home-manager = {
|
||||||
|
enable = lib.mkEnableOption "Enable home-manager for the user";
|
||||||
|
import = lib.mkOption
|
||||||
|
{
|
||||||
|
description = "Import path. MUST BE SET IN CONFIGURATION.NIX";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
config = lib.mkIf config.main-user.enable {
|
||||||
|
users.users.${config.main-user.name} = {
|
||||||
|
isNormalUser = true;
|
||||||
|
initialPassword = "1234";
|
||||||
|
description = "Main system user";
|
||||||
|
extraGroups = [
|
||||||
|
"networkmanager"
|
||||||
|
"audio"
|
||||||
|
]
|
||||||
|
++ config.main-user.groups
|
||||||
|
++ (lib.lists.optional config.main-user.sudo "wheel");
|
||||||
|
|
||||||
|
shell = config.main-user.shell;
|
||||||
|
};
|
||||||
|
|
||||||
|
home-manager.users.${config.main-user.name} =
|
||||||
|
lib.mkIf config.main-user.home-manager.enable config.main-user.home-manager.import;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
181
modules/window-managers/hyprland/default.nix
Executable file
181
modules/window-managers/hyprland/default.nix
Executable file
|
@ -0,0 +1,181 @@
|
||||||
|
{ monitors ? []
|
||||||
|
, border-radius ? 0
|
||||||
|
}:
|
||||||
|
{ lib, pkgs, inputs, ... } @ params:
|
||||||
|
{
|
||||||
|
imports = [
|
||||||
|
./exec.nix
|
||||||
|
./env.nix
|
||||||
|
];
|
||||||
|
|
||||||
|
programs.alacritty.enable = lib.mkDefault true;
|
||||||
|
|
||||||
|
wayland.windowManager.hyprland =
|
||||||
|
let
|
||||||
|
pluginsNix = (import ./plugins.nix params);
|
||||||
|
inherit (pluginsNix) plugins;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
# plugins = plugins;
|
||||||
|
|
||||||
|
settings = {
|
||||||
|
autogenerated = false;
|
||||||
|
|
||||||
|
# monitor = [
|
||||||
|
# "eDP-1, 1920x1080@60, auto, 1"
|
||||||
|
# ];
|
||||||
|
|
||||||
|
monitor = monitors;
|
||||||
|
|
||||||
|
general = {
|
||||||
|
gaps_in = 5;
|
||||||
|
gaps_out = 10;
|
||||||
|
};
|
||||||
|
|
||||||
|
input = {
|
||||||
|
kb_layout = "us";
|
||||||
|
|
||||||
|
follow_mouse = true;
|
||||||
|
|
||||||
|
# Maps capslock to escape
|
||||||
|
kb_options = "caps:escape";
|
||||||
|
|
||||||
|
sensitivity = 0.3;
|
||||||
|
accel_profile = "flat";
|
||||||
|
touchpad.natural_scroll = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
master = {
|
||||||
|
new_status = "master";
|
||||||
|
};
|
||||||
|
|
||||||
|
animations = {
|
||||||
|
enabled = true;
|
||||||
|
|
||||||
|
bezier = [
|
||||||
|
"myBezier, 0.05, 0.9, 0.1, 1.05"
|
||||||
|
];
|
||||||
|
|
||||||
|
animation = [
|
||||||
|
"windows, 1, 7, myBezier"
|
||||||
|
"windowsOut, 1, 7, default, popin 80%"
|
||||||
|
"border, 1, 10, default"
|
||||||
|
"borderangle, 1, 8, default"
|
||||||
|
"fade, 1, 7, default"
|
||||||
|
"workspaces, 1, 6, default"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
gestures = {
|
||||||
|
workspace_swipe = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
cursor = {
|
||||||
|
no_hardware_cursors = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
misc = {
|
||||||
|
vfr = true;
|
||||||
|
# begone satan, why is this so fucking hard to disable 99% of the time
|
||||||
|
middle_click_paste = false;
|
||||||
|
};
|
||||||
|
|
||||||
|
decoration = {
|
||||||
|
blur.enabled = false;
|
||||||
|
rounding = border-radius;
|
||||||
|
};
|
||||||
|
|
||||||
|
binds = {
|
||||||
|
workspace_back_and_forth = true;
|
||||||
|
disable_keybind_grabbing = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
# screencopy = {
|
||||||
|
# allow_token_by_default = true;
|
||||||
|
# };
|
||||||
|
|
||||||
|
# Set mod key
|
||||||
|
"$mod" = "super";
|
||||||
|
|
||||||
|
bind = [
|
||||||
|
"$mod, Return, exec, alacritty"
|
||||||
|
"$mod, C, killactive"
|
||||||
|
"$mod, V, togglefloating"
|
||||||
|
"$mod, G, fullscreen"
|
||||||
|
|
||||||
|
"$mod, D, exec, tofi-drun | bash"
|
||||||
|
"$mod, F, exec, ${pkgs.writeScriptBin "run_anything.sh" ''
|
||||||
|
package=$(echo "" | tofi --require-match=false --prompt-text=", " --height=35);
|
||||||
|
|
||||||
|
if [[ -z "$package" ]]; then
|
||||||
|
exit 1;
|
||||||
|
fi
|
||||||
|
|
||||||
|
notify-send "Running $package";
|
||||||
|
error=$(, -P tofi $package 2>&1)
|
||||||
|
if [ $? -ne 0 ]; then
|
||||||
|
notify-send "Error with $package" "$error"
|
||||||
|
fi
|
||||||
|
''}/bin/run_anything.sh"
|
||||||
|
|
||||||
|
"$mod SHIFT, S, exec, grimblast --freeze copy area"
|
||||||
|
"$mod SHIFT, Q, exec, hyprctl kill"
|
||||||
|
|
||||||
|
"$mod, L, exec, hyprlock"
|
||||||
|
|
||||||
|
] ++ (
|
||||||
|
# Auto generate workspace switching from [0-9] and shift + [0-9]
|
||||||
|
builtins.concatLists (builtins.genList
|
||||||
|
(
|
||||||
|
x:
|
||||||
|
let
|
||||||
|
ws =
|
||||||
|
let
|
||||||
|
c = (x + 1) / 10;
|
||||||
|
in
|
||||||
|
builtins.toString (x + 1 - (c * 10));
|
||||||
|
in
|
||||||
|
[
|
||||||
|
"$mod, ${ws}, workspace, ${toString (x + 1)}"
|
||||||
|
"$mod SHIFT, ${ws}, movetoworkspace, ${toString (x + 1)}"
|
||||||
|
]
|
||||||
|
)
|
||||||
|
10)
|
||||||
|
);
|
||||||
|
|
||||||
|
# XF86AudioMedia
|
||||||
|
# XF86AudioPrev
|
||||||
|
# XF86AudioNext
|
||||||
|
# XF86AudioPlay
|
||||||
|
# XF86AudioStop
|
||||||
|
binde = [
|
||||||
|
# Volume keys
|
||||||
|
", XF86AudioRaiseVolume, exec, wpctl set-volume -l 1.5 @DEFAULT_AUDIO_SINK@ 5%+"
|
||||||
|
", XF86AudioLowerVolume, exec, wpctl set-volume -l 1.5 @DEFAULT_AUDIO_SINK@ 5%-"
|
||||||
|
", XF86AudioMute, exec, wpctl set-mute @DEFAULT_SINK@ toggle"
|
||||||
|
", XF86AudioPlay, exec, playerctl play-pause"
|
||||||
|
", XF86AudioPrev, exec, playerctl previous"
|
||||||
|
", XF86AudioNext, exec, playerctl next"
|
||||||
|
|
||||||
|
", XF86MonBrightnessUp, exec, brightnessctl s 5%+"
|
||||||
|
", XF86MonBrightnessDown, exec, brightnessctl s 5%-"
|
||||||
|
];
|
||||||
|
|
||||||
|
bindm = [
|
||||||
|
"$mod, mouse:272, movewindow"
|
||||||
|
"$mod, mouse:273, resizewindow"
|
||||||
|
];
|
||||||
|
|
||||||
|
windowrulev2 = [
|
||||||
|
"pin, initialClass:^(zen-alpha)$, initialTitle:^(Zen)$"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
extraConfig = ''
|
||||||
|
''
|
||||||
|
# + (import ./plugins.nix { inherit pkgs; inherit inputs; }).pluginConfig
|
||||||
|
;
|
||||||
|
};
|
||||||
|
}
|
16
modules/window-managers/hyprland/env.nix
Executable file
16
modules/window-managers/hyprland/env.nix
Executable file
|
@ -0,0 +1,16 @@
|
||||||
|
{...}:
|
||||||
|
|
||||||
|
{
|
||||||
|
wayland.windowManager.hyprland.settings.env = [
|
||||||
|
# "LIBVA_DRIVER_NAME,nvidia"
|
||||||
|
"LIBVA_DRIVER_NAME,iHD"
|
||||||
|
"XDG_SESSION_TYPE,wayland"
|
||||||
|
"GBM_BACKEND,wayland"
|
||||||
|
"GTK_USE_PORTAL,1"
|
||||||
|
"__GLX_VENDOR_LIBRARY_NAME,nvidia"
|
||||||
|
"QT_QPA_PLATFORM,wayland"
|
||||||
|
"XDG_CURRENT_DESKTOP,Hyprland"
|
||||||
|
"XDG_SESSION_DESKTOP,Hyprland"
|
||||||
|
# "MOZ_ENABLE_WAYLAND,0"
|
||||||
|
];
|
||||||
|
}
|
9
modules/window-managers/hyprland/exec.nix
Executable file
9
modules/window-managers/hyprland/exec.nix
Executable file
|
@ -0,0 +1,9 @@
|
||||||
|
{ ... }:
|
||||||
|
{
|
||||||
|
wayland.windowManager.hyprland.settings.exec = [ ];
|
||||||
|
wayland.windowManager.hyprland.settings.exec-once = [
|
||||||
|
# "hyprpaper &"
|
||||||
|
"waybar &"
|
||||||
|
"blueman-applet &"
|
||||||
|
];
|
||||||
|
}
|
45
modules/window-managers/hyprland/hypridle.nix
Executable file
45
modules/window-managers/hyprland/hypridle.nix
Executable file
|
@ -0,0 +1,45 @@
|
||||||
|
{ ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
services.hypridle = {
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
settings = {
|
||||||
|
general = {
|
||||||
|
lock_cmd = "dunstctl set-paused true; pidof hyprlock || hyprlock"; # avoid starting multiple hyprlock instances.
|
||||||
|
unlock_cmd = "dunstctl set-paused false";
|
||||||
|
before_sleep_cmd = "loginctl lock-session"; # lock before suspend.
|
||||||
|
after_sleep_cmd = "hyprctl dispatch dpms on"; # to avoid having to press a key twice to turn on the display.
|
||||||
|
};
|
||||||
|
|
||||||
|
listener = [
|
||||||
|
{
|
||||||
|
timeout = 150; # 2.5min.
|
||||||
|
on-timeout = "brightnessctl -s set 10"; # set monitor backlight to minimum, avoid 0 on OLED monitor.
|
||||||
|
on-resume = "brightnessctl -r"; # monitor backlight restor.
|
||||||
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
timeout = 300; # 5min
|
||||||
|
on-timeout = "loginctl lock-session"; # lock screen when timeout has passed
|
||||||
|
on-resume = "brightnessctl -r"; # monitor backlight restor.
|
||||||
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
timeout = 380; # 5.5min
|
||||||
|
on-timeout = "hyprctl dispatch dpms off"; # screen off when timeout has passed
|
||||||
|
on-resume = [
|
||||||
|
"hyprctl dispatch dpms on" # screen on when activity is detected after timeout has fired.
|
||||||
|
"brightnessctl -r" # monitor backlight restor.
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
timeout = 600;
|
||||||
|
on-timeout = "systemctl suspend-then-hibernate";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
}
|
72
modules/window-managers/hyprland/hyprlock.nix
Executable file
72
modules/window-managers/hyprland/hyprlock.nix
Executable file
|
@ -0,0 +1,72 @@
|
||||||
|
{ lib, inputs, config, ... }:
|
||||||
|
{
|
||||||
|
programs.hyprlock = {
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
settings = {
|
||||||
|
general.grace = 2;
|
||||||
|
|
||||||
|
background = {
|
||||||
|
# path = (if config.stylix.enable then builtins.toString config.stylix.image else "");
|
||||||
|
# color = (if config.stylix.enable then config.lib.stylix.colors.base01 else "");
|
||||||
|
};
|
||||||
|
|
||||||
|
input-field = {
|
||||||
|
size = "250, 50";
|
||||||
|
outline_thickness = 1;
|
||||||
|
dots_size = 0.33;
|
||||||
|
dots_spacing = 0.15;
|
||||||
|
dost_center = false;
|
||||||
|
dots_rounding = -1;
|
||||||
|
|
||||||
|
# outer_color = "rgb(42, 40, 62)";
|
||||||
|
# inner_color = "rgb(57, 53, 82)";
|
||||||
|
# font_color = "rgb(224, 222, 244)";
|
||||||
|
fade_on_empty = false;
|
||||||
|
fade_timeout = 4000;
|
||||||
|
|
||||||
|
placeholder_text = "<span foreground=\"##e0def4\">Input Password...</span>";
|
||||||
|
hide_input = false;
|
||||||
|
rounding = 0;
|
||||||
|
|
||||||
|
# check_color = "rgb(246, 193, 119)";
|
||||||
|
# fail_color = "rgb(235, 111, 146)";
|
||||||
|
|
||||||
|
fail_text = "<i>$FAIL <b>($ATTEMPTS)</b></i>";
|
||||||
|
fail_transition = 300;
|
||||||
|
# capslock_color = "rgb(196, 167, 231)";
|
||||||
|
numlock_color = -1;
|
||||||
|
bothlock_color = -1;
|
||||||
|
invert_numlock = false;
|
||||||
|
|
||||||
|
position = "0, -20";
|
||||||
|
halign = "center";
|
||||||
|
valign = "center";
|
||||||
|
};
|
||||||
|
|
||||||
|
label = [
|
||||||
|
{
|
||||||
|
text = "cmd[update:1000] echo \"<span>$(date +%H:%M:%S)</span>\"";
|
||||||
|
color = "rgb(200, 200, 200)";
|
||||||
|
font_size = 15;
|
||||||
|
font_family = "Noto Sans";
|
||||||
|
|
||||||
|
position = "-10, -10";
|
||||||
|
halign = "right";
|
||||||
|
valign = "top";
|
||||||
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
text = "<span> $USER</span>";
|
||||||
|
color = "rgb(200, 200, 200)";
|
||||||
|
font_size = 25;
|
||||||
|
font_family = "Noto Sans";
|
||||||
|
|
||||||
|
position = "0, 50";
|
||||||
|
halign = "center";
|
||||||
|
valign = "center";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
238
modules/window-managers/hyprland/plugins.nix
Normal file
238
modules/window-managers/hyprland/plugins.nix
Normal file
|
@ -0,0 +1,238 @@
|
||||||
|
{ pkgs, inputs, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
plugins = with pkgs.hyprlandPlugins; [
|
||||||
|
hyprfocus
|
||||||
|
# inputs.hypr-dynamic-cursors.packages.${pkgs.system}.hypr-dynamic-cursors
|
||||||
|
];
|
||||||
|
|
||||||
|
pluginConfig = ''
|
||||||
|
hyprfocus {
|
||||||
|
enabled = yes
|
||||||
|
animate_floating = yes
|
||||||
|
animate_workspacechange = yes
|
||||||
|
focus_animation = shrink
|
||||||
|
# Beziers for focus animations
|
||||||
|
bezier = bezIn, 0.5,0.0,1.0,0.5
|
||||||
|
bezier = bezOut, 0.0,0.5,0.5,1.0
|
||||||
|
bezier = overshot, 0.05, 0.9, 0.1, 1.05
|
||||||
|
bezier = smoothOut, 0.36, 0, 0.66, -0.56
|
||||||
|
bezier = smoothIn, 0.25, 1, 0.5, 1
|
||||||
|
bezier = realsmooth, 0.28,0.29,.69,1.08
|
||||||
|
# Flash settings
|
||||||
|
flash {
|
||||||
|
flash_opacity = 0.95
|
||||||
|
in_bezier = realsmooth
|
||||||
|
in_speed = 0.5
|
||||||
|
out_bezier = realsmooth
|
||||||
|
out_speed = 3
|
||||||
|
}
|
||||||
|
# Shrink settings
|
||||||
|
shrink {
|
||||||
|
shrink_percentage = 0.95
|
||||||
|
in_bezier = realsmooth
|
||||||
|
in_speed = 1
|
||||||
|
out_bezier = realsmooth
|
||||||
|
out_speed = 2
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
plugin:dynamic-cursors {
|
||||||
|
|
||||||
|
# enables the plugin
|
||||||
|
enabled = true
|
||||||
|
|
||||||
|
# sets the cursor behaviour, supports these values:
|
||||||
|
# tilt - tilt the cursor based on x-velocity
|
||||||
|
# rotate - rotate the cursor based on movement direction
|
||||||
|
# stretch - stretch the cursor shape based on direction and velocity
|
||||||
|
# none - do not change the cursors behaviour
|
||||||
|
mode = tilt
|
||||||
|
|
||||||
|
# minimum angle difference in degrees after which the shape is changed
|
||||||
|
# smaller values are smoother, but more expensive for hw cursors
|
||||||
|
threshold = 2
|
||||||
|
|
||||||
|
# override the mode behaviour per shape
|
||||||
|
# this is a keyword and can be repeated many times
|
||||||
|
# by default, there are no rules added
|
||||||
|
# see the dedicated `shape rules` section below!
|
||||||
|
# shaperule = <shape-name>, <mode> (optional), <property>: <value>, ...
|
||||||
|
# shaperule = <shape-name>, <mode> (optional), <property>: <value>, ...
|
||||||
|
# ...
|
||||||
|
|
||||||
|
# for mode = rotate
|
||||||
|
rotate {
|
||||||
|
|
||||||
|
# length in px of the simulated stick used to rotate the cursor
|
||||||
|
# most realistic if this is your actual cursor size
|
||||||
|
length = 20
|
||||||
|
|
||||||
|
# clockwise offset applied to the angle in degrees
|
||||||
|
# this will apply to ALL shapes
|
||||||
|
offset = 0.0
|
||||||
|
}
|
||||||
|
|
||||||
|
# for mode = tilt
|
||||||
|
tilt {
|
||||||
|
|
||||||
|
# controls how powerful the tilt is, the lower, the more power
|
||||||
|
# this value controls at which speed (px/s) the full tilt is reached
|
||||||
|
limit = 5000
|
||||||
|
|
||||||
|
# relationship between speed and tilt, supports these values:
|
||||||
|
# linear - a linear function is used
|
||||||
|
# quadratic - a quadratic function is used (most realistic to actual air drag)
|
||||||
|
# negative_quadratic - negative version of the quadratic one, feels more aggressive
|
||||||
|
function = negative_quadratic
|
||||||
|
}
|
||||||
|
|
||||||
|
# for mode = stretch
|
||||||
|
stretch {
|
||||||
|
|
||||||
|
# controls how much the cursor is stretched
|
||||||
|
# this value controls at which speed (px/s) the full stretch is reached
|
||||||
|
limit = 3000
|
||||||
|
|
||||||
|
# relationship between speed and stretch amount, supports these values:
|
||||||
|
# linear - a linear function is used
|
||||||
|
# quadratic - a quadratic function is used
|
||||||
|
# negative_quadratic - negative version of the quadratic one, feels more aggressive
|
||||||
|
function = quadratic
|
||||||
|
}
|
||||||
|
|
||||||
|
# configure shake to find
|
||||||
|
# magnifies the cursor if its is being shaken
|
||||||
|
shake {
|
||||||
|
|
||||||
|
# enables shake to find
|
||||||
|
enabled = true
|
||||||
|
|
||||||
|
# use nearest-neighbour (pixelated) scaling when shaking
|
||||||
|
# may look weird when effects are enabled
|
||||||
|
nearest = true
|
||||||
|
|
||||||
|
# controls how soon a shake is detected
|
||||||
|
# lower values mean sooner
|
||||||
|
threshold = 6.0
|
||||||
|
|
||||||
|
# magnification level immediately after shake start
|
||||||
|
base = 4.0
|
||||||
|
# magnification increase per second when continuing to shake
|
||||||
|
speed = 4.0
|
||||||
|
# how much the speed is influenced by the current shake intensitiy
|
||||||
|
influence = 0.0
|
||||||
|
|
||||||
|
# maximal magnification the cursor can reach
|
||||||
|
# values below 1 disable the limit (e.g. 0)
|
||||||
|
limit = 0.0
|
||||||
|
|
||||||
|
# time in millseconds the cursor will stay magnified after a shake has ended
|
||||||
|
timeout = 2000
|
||||||
|
|
||||||
|
# show cursor behaviour `tilt`, `rotate`, etc. while shaking
|
||||||
|
effects = false
|
||||||
|
|
||||||
|
# enable ipc events for shake
|
||||||
|
# see the `ipc` section below
|
||||||
|
ipc = false
|
||||||
|
}
|
||||||
|
|
||||||
|
# use hyprcursor to get a higher resolution texture when the cursor is magnified
|
||||||
|
# see the `hyprcursor` section below
|
||||||
|
hyprcursor {
|
||||||
|
|
||||||
|
# use nearest-neighbour (pixelated) scaling when magnifing beyond texture size
|
||||||
|
# this will also have effect without hyprcursor support being enabled
|
||||||
|
# 0 / false - never use pixelated scaling
|
||||||
|
# 1 / true - use pixelated when no highres image
|
||||||
|
# 2 - always use pixleated scaling
|
||||||
|
nearest = true
|
||||||
|
|
||||||
|
# enable dedicated hyprcursor support
|
||||||
|
enabled = true
|
||||||
|
|
||||||
|
# resolution in pixels to load the magnified shapes at
|
||||||
|
# be warned that loading a very high-resolution image will take a long time and might impact memory consumption
|
||||||
|
# -1 means we use [normal cursor size] * [shake:base option]
|
||||||
|
resolution = -1
|
||||||
|
|
||||||
|
# shape to use when clientside cursors are being magnified
|
||||||
|
# see the shape-name property of shape rules for possible names
|
||||||
|
# specifying clientside will use the actual shape, but will be pixelated
|
||||||
|
fallback = clientside
|
||||||
|
}
|
||||||
|
}
|
||||||
|
'';
|
||||||
|
|
||||||
|
# wayland.windowManager.hyprland.hyprfocus = {
|
||||||
|
# enabled = true;
|
||||||
|
# animate_floating = false;
|
||||||
|
# animate_workspacechange = false;
|
||||||
|
#
|
||||||
|
# # Possible values:
|
||||||
|
# # - shrink
|
||||||
|
# # - flash
|
||||||
|
# focus_animation = "shrink";
|
||||||
|
#
|
||||||
|
# bezier = [
|
||||||
|
# "bezIn, 0.5,0.0,1.0,0.5"
|
||||||
|
# "bezOut, 0.0,0.5,0.5,1.0"
|
||||||
|
# "overshot, 0.05, 0.9, 0.1, 1.05"
|
||||||
|
# "smoothOut, 0.36, 0, 0.66, -0.56"
|
||||||
|
# "smoothIn, 0.25, 1, 0.5, 1"
|
||||||
|
# "realsmooth, 0.28,0.29,.69,1.08"
|
||||||
|
# ];
|
||||||
|
#
|
||||||
|
# # Flash animation settings
|
||||||
|
# flash = {
|
||||||
|
# flash_opacity = 0.95;
|
||||||
|
# in_bezier = "realsmooth";
|
||||||
|
# in_speed = 0.5;
|
||||||
|
# out_bezier = "realsmooth";
|
||||||
|
# out_speed = 3;
|
||||||
|
# };
|
||||||
|
#
|
||||||
|
# # Shrink animation settings
|
||||||
|
# shrink = {
|
||||||
|
# shrink_percentage = 0.95;
|
||||||
|
# in_bezier = "realsmooth";
|
||||||
|
# in_speed = 1;
|
||||||
|
# out_bezier = "realsmooth";
|
||||||
|
# out_speed = 2;
|
||||||
|
# };
|
||||||
|
# };
|
||||||
|
#
|
||||||
|
# wayland.windowManager.hyprland.plugin."dynamic-cursor" = {
|
||||||
|
# enabled = true;
|
||||||
|
#
|
||||||
|
# # Possible values:
|
||||||
|
# # - rotate
|
||||||
|
# # - tilt
|
||||||
|
# # - stretch
|
||||||
|
# # - none
|
||||||
|
# mode = "tilt";
|
||||||
|
#
|
||||||
|
# # minimum angle difference in degrees after which the shape is changed
|
||||||
|
# # smaller values are smoother, but more expensive for hw cursors
|
||||||
|
# threshold = 2;
|
||||||
|
#
|
||||||
|
# # override the mode behaviour per shape
|
||||||
|
# # this is a keyword and can be repeated many times
|
||||||
|
# # by default, there are no rules added
|
||||||
|
# # shaperule = <shape-name>, <mode> (optional), <property>: <value>, ...
|
||||||
|
# shaperule = [];
|
||||||
|
#
|
||||||
|
# tilt = {
|
||||||
|
# # controls how powerful the tilt is, the lower, the more power
|
||||||
|
# # this value controls at which speed (px/s) the full tilt is reached
|
||||||
|
# limit = 5000;
|
||||||
|
#
|
||||||
|
# # relationship between speed and tilt, supports these values:
|
||||||
|
# # linear - a linear function is used
|
||||||
|
# # quadratic - a quadratic function is used (most realistic to actual air drag)
|
||||||
|
# # negative_quadratic - negative version of the quadratic one, feels more aggressive
|
||||||
|
# function = "negative_quadratic";
|
||||||
|
# };
|
||||||
|
# };
|
||||||
|
}
|
20
templates/dotnet/flake.nix
Executable file
20
templates/dotnet/flake.nix
Executable file
|
@ -0,0 +1,20 @@
|
||||||
|
{
|
||||||
|
description = "Dotnet flake for dotnet development";
|
||||||
|
outputs = { self, nixpkgs }:
|
||||||
|
let
|
||||||
|
pkgs = nixpkgs.legacyPackages.x86_64-linux;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
devShells.x86_64-linux = {
|
||||||
|
default = with pkgs; mkShell {
|
||||||
|
buildInputs = with pkgs; [
|
||||||
|
dotnet-sdk_8
|
||||||
|
];
|
||||||
|
|
||||||
|
shellHook = ''
|
||||||
|
echo "dotnet shell"
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
2
templates/dotnet/makefile
Executable file
2
templates/dotnet/makefile
Executable file
|
@ -0,0 +1,2 @@
|
||||||
|
all:
|
||||||
|
dotnet run Program.fs
|
32
templates/latex/fsharp-lang.tex
Executable file
32
templates/latex/fsharp-lang.tex
Executable file
|
@ -0,0 +1,32 @@
|
||||||
|
\usepackage{listings}
|
||||||
|
|
||||||
|
\lstdefinelanguage{FSharp}%
|
||||||
|
{morekeywords={let, new, match, with, rec, open, module, namespace, type, of, member, %
|
||||||
|
and, for, while, true, false, in, do, begin, end, fun, function, return, yield, try, %
|
||||||
|
mutable, if, then, else, cloud, async, static, use, abstract, interface, inherit, finally },
|
||||||
|
otherkeywords={ let!, return!, do!, yield!, use!, var, from, select, where, order, by },
|
||||||
|
keywordstyle=\color{bluekeywords},
|
||||||
|
sensitive=true,
|
||||||
|
basicstyle=\ttfamily,
|
||||||
|
breaklines=true,
|
||||||
|
xleftmargin=\parindent,
|
||||||
|
aboveskip=\bigskipamount,
|
||||||
|
tabsize=4,
|
||||||
|
morecomment=[l][\color{greencomments}]{///},
|
||||||
|
morecomment=[l][\color{greencomments}]{//},
|
||||||
|
morecomment=[s][\color{greencomments}]{{(*}{*)}},
|
||||||
|
morestring=[b]",
|
||||||
|
showstringspaces=false,
|
||||||
|
literate={`}{\`}1,
|
||||||
|
stringstyle=\color{redstrings},
|
||||||
|
}
|
||||||
|
\lstset
|
||||||
|
{ %Formatting for code in appendix
|
||||||
|
language=FSharp,
|
||||||
|
numbers=left,
|
||||||
|
stepnumber=1,
|
||||||
|
showstringspaces=false,
|
||||||
|
tabsize=1,
|
||||||
|
breaklines=true,
|
||||||
|
breakatwhitespace=false,
|
||||||
|
}
|
15
templates/latex/skabelon.bib
Executable file
15
templates/latex/skabelon.bib
Executable file
|
@ -0,0 +1,15 @@
|
||||||
|
@online{traeinfo,
|
||||||
|
author = "Træinformation",
|
||||||
|
title = "kursusmateriale om clt",
|
||||||
|
url = "https://www.traeinfo.dk/kursusmateriale-om-clt/",
|
||||||
|
addendum = "Besøgt: 01.05.2020",
|
||||||
|
keywords = "Træinformation",
|
||||||
|
}
|
||||||
|
|
||||||
|
@online{cristobal,
|
||||||
|
author = "Wikipedia",
|
||||||
|
title = "Cristobal Tapia De Veer",
|
||||||
|
url = "https://en.wikipedia.org/wiki/Cristobal_Tapia_de_Veer",
|
||||||
|
addendum = "Besøgt: 23 oct 2023",
|
||||||
|
keywords = "Cristobal",
|
||||||
|
}
|
68
templates/latex/skabelon.tex
Executable file
68
templates/latex/skabelon.tex
Executable file
|
@ -0,0 +1,68 @@
|
||||||
|
\documentclass[12pt, a4paper]{article}
|
||||||
|
|
||||||
|
\usepackage{graphicx}
|
||||||
|
\usepackage{amsmath}
|
||||||
|
\usepackage{enumerate}
|
||||||
|
\usepackage{titling}
|
||||||
|
|
||||||
|
\usepackage[
|
||||||
|
a4paper,
|
||||||
|
includehead,
|
||||||
|
nomarginpar,
|
||||||
|
]{geometry}
|
||||||
|
|
||||||
|
\usepackage{fancyhdr}
|
||||||
|
|
||||||
|
\input{fsharp-lang}
|
||||||
|
|
||||||
|
\usepackage[dvipsnames]{xcolor}
|
||||||
|
\usepackage{hyperref}
|
||||||
|
\hypersetup{
|
||||||
|
colorlinks,
|
||||||
|
citecolor=RoyalBlue,
|
||||||
|
filecolor=black,
|
||||||
|
linkcolor=black,
|
||||||
|
urlcolor=RoyalBlue
|
||||||
|
}
|
||||||
|
|
||||||
|
\usepackage[backend=biber,style=mla,sorting=ynt]{biblatex}
|
||||||
|
\addbibresource{skabelon.bib}
|
||||||
|
|
||||||
|
\title{\LaTeX{} Skabelon}
|
||||||
|
\author{Snorre Ettrup Altschul}
|
||||||
|
\date{\today}
|
||||||
|
|
||||||
|
\renewcommand*\contentsname{Indholdsfortegnelse}
|
||||||
|
|
||||||
|
% Document begin
|
||||||
|
\begin{document}
|
||||||
|
|
||||||
|
\pagestyle{fancy}
|
||||||
|
\fancyhead[L]{\theauthor}
|
||||||
|
\fancyhead[C]{\thetitle}
|
||||||
|
|
||||||
|
\maketitle
|
||||||
|
|
||||||
|
\begin{figure}[h]
|
||||||
|
\centering
|
||||||
|
\includegraphics[width=0.65\textwidth]{figur.jpg}
|
||||||
|
\end{figure}
|
||||||
|
|
||||||
|
\newpage
|
||||||
|
|
||||||
|
% Table of contents
|
||||||
|
% \tableofcontents
|
||||||
|
|
||||||
|
\newpage
|
||||||
|
|
||||||
|
\section{Information}
|
||||||
|
|
||||||
|
\newpage
|
||||||
|
|
||||||
|
% \printbibliography[
|
||||||
|
% heading=bibintoc,
|
||||||
|
% title={Kildeliste}
|
||||||
|
% ]
|
||||||
|
|
||||||
|
\end{document}
|
||||||
|
|
Loading…
Reference in a new issue