starting point
This commit is contained in:
commit
279f90bfb8
README.mdflake.lockflake.nixinstall.sh
hosts
bootstrap
desktop
laptop
configuration.nixhardware-configuration.nixhome.nixnixos-wallpaper.pngpersist-work.nixpersist.nix
ssh
work-home.nixnixos-vm
modules
disko
drivers
editors/nixvim
default.nixextra.nixkeymaps.nixoptions.nix
plugins
cmp.niximage.nixlsp-lines.nixlsp.nixlualine.nixneorg.nixnvim-ts-comment-context.nixorgmode.nixtelescope.nixtreesitter.nixundotree.nixvimtex.nixwhich-key.nixwilder.nix
syntax
plymouth
portals
programs
shells
stylix
users
window-managers/hyprland
templates
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 ![]() (image error) 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 ![]() (image error) 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